写点什么

使用融云 SDK 避坑指南之 iOS13 推送失败

发布于: 2021 年 03 月 16 日

融云 SDK 支持苹果推送,当我使用的设备升级到 iOS13 及以上时,推送突然就不能用了😫,经过半天的排查,终于找到了问题,原来是 deviceToken 格式变了,具体可以参考 https://blog.csdn.net/yingBi2014/article/details/103457160


问题原因:由于 iOS13 以后,苹果的 deviceToken 格式变了,但是上传给融云的 deviceToken 处理方式还是使用的老方式,导致了推送无法收到。


处理方法:


升级融云的 SDK,他们提供了新的接口,需要升级到 2.9.25 以后的版本,可以适配新格式的 deviceToken,且坚固老版本。

- (void)application:(UIApplication *)application
复制代码


    didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
复制代码


    [[RCIMClient sharedRCIMClient] setDeviceTokenData:deviceToken];
复制代码


}
复制代码


如果不想升级 SDK,那就得单独处理一下

 (void)application:(UIApplication *)application
复制代码


    didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
复制代码


    NSString *token = [self getHexStringForData:deviceToken];
复制代码


    [[RCIMClient sharedRCIMClient] setDeviceToken:token];
复制代码


}
复制代码


复制代码


- (NSString *)getHexStringForData:(NSData *)data {
复制代码


    NSUInteger len = [data length];
复制代码


    char *chars = (char *)[data bytes];
复制代码


    NSMutableString *hexString = [[NSMutableString alloc] init];
复制代码


    for (NSUInteger i = 0; i < len; i ++) {
复制代码


        [hexString appendString:[NSString stringWithFormat:@"%0.2hhx", chars[i]]];
复制代码


    }
复制代码


    return hexString;
复制代码


}
复制代码


想了解更多的关于融云推送的问题,可以去看看他们的文档,写的还是挺详细的,图文都有 https://docs.rongcloud.cn/v3/views/im/ui/guide/private/notify/push/ios.html


融云官网:https://www.rongcloud.cn/


用户头像

还未添加个人签名 2021.01.26 加入

还未添加个人简介

评论

发布
暂无评论
使用融云 SDK 避坑指南之 iOS13 推送失败