差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
后一修订版 两侧同时换到之后的修订记录
im:ios:apns:deploy [2019/04/11 03:12]
jk [SDK的运行状态]
im:ios:apns:deploy [2019/09/29 04:22]
huanxinfudh [客户端如何申请DeviceToken]
行 2: 行 2:
  
 ===== SDK的运行状态 ===== ===== SDK的运行状态 =====
-  ​当App在前台可见的时候,SDK处于前台活跃状态,此时是使用SDK长连接接收消息。 +  ​当 App 在前台可见的时候,SDK 处于前台活跃状态,此时是使用 SDK 长连接接收消息。 
-  ​当App进入后台且在2分钟之内的时候,SDK处于后台活跃状态,此时是使用SDK长连接接收消息(用户根据需要实现本地通知,否则将不会有本地通知提示弹出)。 +  ​ 
-  ​当App进入后台超过2分,被系统挂起,此时SDK处于不活跃状态,或者是主动把App进程杀死,此时如果有新消息,是通过苹果的APNs服务进行提醒的。当App再次启动,SDK会去服务器拉取不活跃期间的消息。+  * 当 App 进入后台且在2分钟之内的时候,SDK 处于后台活跃状态,此时是使用 SDK 长连接接收消息(用户根据需要实现本地通知,否则将不会有本地通知提示弹出)。 
 +  ​ 
 +  * 当 App 进入后台超过2分,被系统挂起,此时 SDK 处于不活跃状态,或者是主动把App进程杀死,此时如果有新消息,是通过苹果的 APNs 服务进行提醒的。当 App 再次启动,SDK 会去服务器拉取不活跃期间的消息。
  
-**注意:**''​由于本地通知和APNs不好区分,调试时建议您将App进程杀死,确保所有的提醒都是来自于APNs推送。''​+**注意:**''​由于本地通知和 APNs 不好区分,调试时建议您将 App 进程杀死,确保所有的提醒都是来自于 APNs 推送。''​
  
 ===== 消息推送流程 ===== ===== 消息推送流程 =====
行 148: 行 150:
  
 <​code>​ <​code>​
 +iOS 13之前:
 // 将得到的deviceToken传给SDK // 将得到的deviceToken传给SDK
 - (void)application:​(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:​(NSData *)deviceToken - (void)application:​(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:​(NSData *)deviceToken
行 153: 行 156:
     dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,​ 0), ^{     dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,​ 0), ^{
         [[EMClient sharedClient] bindDeviceToken:​deviceToken];​         [[EMClient sharedClient] bindDeviceToken:​deviceToken];​
 +    });
 +}
 +
 +iOS 13:
 +// 将得到的deviceToken传给SDK
 +- (void)application:​(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:​(NSData *)deviceToken
 +{
 +    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,​ 0), ^{
 +         const unsigned *tokenBytes = [deviceToken bytes];
 +         ​NSString *token = [NSString stringWithFormat:​@"​%08x%08x%08x%08x%08x%08x%08x%08x",​
 +                          ntohl(tokenBytes[0]),​ ntohl(tokenBytes[1]),​ ntohl(tokenBytes[2]),​
 +                          ntohl(tokenBytes[3]),​ ntohl(tokenBytes[4]),​ ntohl(tokenBytes[5]),​
 +
 +        [[EMClient sharedClient] bindDeviceToken:​token];​
     });     });
 } }