我们都知道苹果的iOS应用只支持自己的APNS推送,所有的开发者如果要开发推送功能都必须申请APNS推送证书,才能够实现推送功能。
基本上对iOS有点了解的开发者都明白APNS推送的基本原理,那就是客户端向APNS请求deviceToken,传递给Server,然后Server根据这个deviceToken和APNS推送证书,把要推送的消息发送给APNS服务器,APNS服务器就会把对应的消息发送给客户端设备,进而分发给应用。
##申请Push证书流程
那么我们使用服务器向APNS服务发送消息的时候,可以通过客户端获取到DeviceToken,那么推送证书,也就是上图中的payload从哪里获取呢?这个就要去苹果的开发者网站上生成对应的APNS推送证书并下载了。
生成APNS推送证书的主要步骤和生成开发者证书类似,都要先生成一个certSigningRequest文件,也就是在【钥匙串】【证书助理】中生成的请求文件,不会的童鞋可以百度一下开发者证书的生成过程。
之后在开发者网站上打开要推送应用的AppID,点击Edit,进入下图中的界面。
勾选Push Notifications,然后选择Create Certificate,分别对应开发环境的push证书,和上线AppStore后的push证书。创建证书的过程和创建开发者证书一样。
下载push证书以后,可以在钥匙串中导出对应的p12证书文件,然后就可以使用该证书连接APNS服务器,发送PUSH消息了。需要注意的是发送的消息必须是指定格式的内容,否则会发送失败哦。
##客户端获取DeviceToken的方法
客户端需要在didFinishLaunching方法中添加注册push通知的方法,以获取对应的deviceToken。
然后添加接收注册结果的方法,就可以获取到对应的deviceToken。
同一个应用在同一台设备上的deviceToken基本上都是不会变化的,一般只有对设备恢复出厂设置才会导致deviceToken的变化。
###但是要注意的是,一个应用的develop和distribution版本获取到的deviceToken是不同的。