iOS关于远程推送的总结
写在前面
之前写过一篇关于推送的文章,大多数都是从文档拷贝过来的内容,最近又重新修改了推送相关的代码,在这里写一点修改的总结,方便自己以后的阅读,并加深一下印象。
iOS推送内容(以个推为例)
设备在线推送
在线推送流程:
个推服务器->应用内推送->个推SDK->客户端
详细描述: 当要推送的对象设备处于在线状态时(安装个推SDK后的设备会和个推服务器通过CID建立一个长连接,当个推服务器要发送消息给该设备时,可以通过判断来确定该设备是否处于在线状态。),服务器会通过CID找到该设备(在注册个推SDK的时候,个推SDK将device token发给个推服务器,个推服务器返回一个CID给SDK,通过CID可以找到相应的设备),并将要发送的信息发给个推SDK。在客户端可以通过个推的回调函数来获取该信息,并做相应的操作。
设备离线推送
离线推送流程:
个推服务器->APN服务器->客户端
详细描述:
当要推送的对象处于离线状态时,个推服务器会发通过获取到的devicetoken向APN服务器发送消息,APN服务器收到消息后通过devicetoken将消息推送到iPhone设备上,并且在通知栏中显示,再次运行APP,会在个推的回调方法中收到该推送消息。如果是点击通知栏进入APP,则会在Application中的
- (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)())completionHandler
复制代码
方法中收到回调(iOS10)。