乐趣区

关于即时通讯:使用融云-SDK-避坑指南之-iOS13-推送失败

融云 SDK 反对苹果推送,当我应用的设施降级到 iOS13 及以上时,推送忽然就不能用了????,通过半天的排查,终于找到了问题,原来是 deviceToken 格局变了,具体能够参考 https://blog.csdn.net/yingBi2014/article/details/103457160

问题起因:因为 iOS13 当前,苹果的 deviceToken 格局变了,然而上传给融云的 deviceToken 解决形式还是应用的老形式,导致了推送无奈收到。

解决办法:

  1. 降级融云的 SDK,他们提供了新的接口,须要降级到 2.9.25 当前的版本,能够适配新格局的 deviceToken,且坚硬老版本。

    • (void)application:(UIApplication *)application
      didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
      [[RCIMClient sharedRCIMClient] setDeviceTokenData:deviceToken];

    }

  2. 如果不想降级 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/

退出移动版