分分钟搞定IOS远程消息推送
一、引言
IOS中消息的推送有两种方式,分别是本地推送和远程推送,本地推送在http://my.oschina.net/u/2340880/blog/405491这篇博客中有详细的介绍,这里主要讨论远程推送的流程与配置过程。
二、远程推送机制的原理
1、从一张很火的图说起
搜索IOS远程推送,你总能看到一张如下的流程示意图,因为这张图确实很火,所以我也将它引用在此:
这张图示意的很清晰,大致意思是这样:你的应用服务端将消息发送到apple的APNS服务器,APNS服务器将消息推送到指定的Iphone,最后由Iphone负责将消息推送至你的APP。在此先不说这个过程是如何实现的,仅仅看这个流程,你可能会觉得,在你们服务端和客户端之间增加了一个apple的APNS,不是增加开发者的负担么?其实结果恰恰相反,因为apple对推送的统一管理,使我们开发者的工作变得异常简单。
2、服务端如何连接到客户端的
如果你是做android开发的,你一定非常了解长链接与心跳包。事实上,大部分的android应用的推送也确实是通过长链接来实现的。因为android系统的开放性,APP是很容易做到自启动和后台长链接的,而心跳验证,就是始终保证长链接属于接通状态,然后由服务端直接推送消息。如果IOS开发者也采用这种思路,就十分困难了,在IOS中想要保持一个APP服务始终不被系统杀死,我只能说太难了。通过上面的流程图,对比android的推送思路,我们很容易明白,IOS中其实也始终有一个长链接,那就是系统本身,这个长链接始终与APNS服务器相连,然后统一管理所有应用程序的推送。
3、这是IOS推送机制的优势?
下面的这些,只是我个人的一些看法。系统并无优劣,优劣在于个人喜好。
1、因为推送的服务端是appleID的验证用户,推送可靠性会高。
2、所有推送消息由APNS统一管理,效率高。
3、在客户端只需系统维护一个长链接,节省了用户流量消耗和手机的性能消耗,并且提高了安全性,使得有恶意推送和流氓软件的几率降低。
三、分分钟让你的APP收到远程推送
1、工欲善其事、必先利其器——创建推送证书
(1)请求CSR文件
在MAC应用程序中找到钥匙串访问,打开它。
点击选项栏中的钥匙串访问中的证书助理:
选择从证书颁发机构申请证书:
填写电子邮件和名称,选择储存到磁盘,然后继续。
这时,我们存储的地方有了这样一个文件:CertificateSigningRequest.certSigningRequest。
(2)导出密钥文件
打开钥匙串,会发现多了一对密钥,名字就是上面你填写的常用名称。
我们选择专用密钥进行导出,然后设置一个我们自己的密码:
这时候我们又有了一个后缀名为.p12的文件。
(3)创建AppId
到https://developer.apple.com的member Center:
用你付过费的开发者appleID登陆后,选择Certificates: