Notification 传输流程
说到Notification的传输流程,其实是包含了三个部分的,这三个部分也是我们需要了解的Notification的核心内容。
Provider-to-APNs Connection Trust
APNs-to-Device Connection Trust
Token Generation and Dispersal
服务端到APNs的链接建立信任,下面先来看一张图
这是apple给出的服务端到APNs的服务链接流程图,在之后的实践中你会发现这些证书的获取,是必须手动在官网的证书上去操作的。所以这一步的在实际操作中的诠释是
- 进入到官网下载develop和production证书到本地
- 将现在的证书编辑成pem格式,同时将对应的私钥也编辑成pem格式
- 将证书和私钥成对打包到同一个pem文件中做推送时用
APNs-to-Device Connection Trust
APNs到客户端之间的连接信任,看一下流程图
在上面的图中,有请求证书的操作,也有链接建立的操作,在实际的操作中其实是这样的
- 手动下载推送证书到xcode或是Xcode自管理生成推送证书供设备使用
- 客户端在启动的时候拿着已经生成的证书想APNs请求
- 建立链接信任
当客户端和远程APNs建立链接之后会获取到APNs下发的token,这个token可以标识唯一的设备。这个token需要传递给服务端,这样服务端就可以知道向哪一个设备推送信息了。
这就是客户端与APNs建立链接以及将token传递给服务端的整个过程
Token Trust (Notification)
服务端在向远程设备发送信息,服务端到APNs的请求中包含的有
- 信息载体payload
- token
- 服务端证书
APNs在验证token和证书有效,APNs将信息发送到对应的客户端。
注意点
服务端和APNs建立的连接是长连接
客户端和APNs建立的连接也是长连接
在ios8之后,服务端可以知道自己的推动是不是成功的发送给APNs,APNs在出错处理上比之前更加的强大。