1、介绍
苹果推送服务APNS(Apple Push Notification Service),是苹果自己维护的推送服务,如果你想用推送就必须经过APNS服务器。推送形式包括顶部消息条、声音以及badge number()有了APNS,应用程序可在任意状态接收到与程序有关的消息(包括运行状态not running,foreground以及background),由于在大多数情况下,iOS中最多只有一个应用能处于active状态,所以,APNS为应用的交互提供了极大的便利。
需要注意的几点
1、APNS是免费的。只要有开发者账号便可以申请APNS证书。
2、APNS又是不可靠的,苹果对信息推送的可靠性不做任何保证。
3、APNS对消息的大小是有限制的,总容量不能超过256字节。
2、架构模式
在系统级别有一个推送服务程序使用 5223 端口。使用这个端口的协议源于 Jabber 后来发展为 XMPP ,被用于 Gtalk 等 IM 软件中。
所以, iOS 的推送,可以不严谨的理解为:
苹果服务器朝手机后台挂的一个 IM 服务程序发送的消息。
然后,系统根据该 IM 消息识别告诉哪个 Apps 具体发生了什么事。
然后,系统分别通知这些 Apps 。
现在市面上的IM应用,大部分采用离线推送,就是应用处于background时走APNS,应用foreground时使用自家的通讯服务。
3、工作流程
1& 2:用户第一次安装应用并第一次启动时,会弹出对话框提示应用需要开通推送,是否允许,如果允许,应用会得到一个硬件token。
有三点需要注意:
第一,此token唯一与设备相关,同一设备上不同应用获取的token是一样的。一般应用第一次打开时,会将token发到应用服务器进行保存
第二,当应用被卸载,然后重新安装时,确认对话框不会再出现,自动继承前一次安装的设置信息;
第三,推送设置可以在设置-通知中进行更改。可以选择开启消息框、声音以及badge number中的一种或多种。
3:开发者此时应该将收到的token发送到应用服务端并保存数据库中(也就是APNS消息的源头)
4