记得14年在dl某大学校招上现场面试iOS时候被问到了APNs也就是苹果的推送问题,当时我表示一脸懵逼,因为当时还没有真正接触做过项目也就了解了个大概,总之当时回答的一塌糊涂!后来回去就在网上仔细查了一下关于推送的文章,这也是我iOS道路上第一次接触APNs。
推送,大多数app都是引入的三方推送,大家也都知道的那些什么,友盟,百度 ,等等就不一一列举,但是在某些时候这些推送的成功率超级低,还有就是对于开发人员的调试上让人觉得繁琐,比如在推送证书的选择上,什么生产环境推送证书、测试环境推送证书、tvOS推送证书、watchOs推送证书、VoIP推送证书。换来换去的很可能出现混乱。不过上述的诸多问题在15年底也就是15年12月的WWDC上苹果做出了颠覆性的修改
这里打个比方对新旧推送机制的区别,原来的推送有点类似udp传输并不能确定你发出的消息对面是否接受成功换句话说成功与否发出方不会有任何监听,在新的推送中采用的HTTP/2协议后,在每次发出推送消息后APNs服务器会回一个200ok而且推送消息的最大长度也提升到4KB 这里(个人理解如有错误,虚心听受。)
来看下新版的 APNs 的新特性:
1)Request 和 Response 支持JSON网络协议
2)APNs支持状态码和返回 error 信息
APNs推送成功时 Response 将返回状态码200,远程通知是否发送成功再也不用靠猜了!
APNs推送失败时,Response 将返回 JSON 格式的 Error 信息。
3)最大推送长度提升到4096字节(4Kb)
4)可以通过 “HTTP/2 PING ” 心跳包功能检测当前 APNs 连接是否可用,并能维持当前长连接。
5)支持为不同的推送类型定义 “topic” 主题
6)不同推送类型,只需要一种推送证书 Universal Push Notification Client SSL 证书。
通过以上文字我们可以得知的就是我们队APNs的发送成功率肯定是可以保证的,但是APNs在去推送到你要发送的设备那就不能保证了,这个得看看苹果服务器的心情了,简单点说,当Apple Pay出来的时候也不是所有的iPhone用户都在同一时间收到推送。期待今年的WWDC苹果去完善吧。
本文只做自己学习的一个记录,如有错误请帮忙指出!