iOS原生实现推送
一、iOS推送机制
Provider是给你手机应用发出推送消息的服务器,而APNS(Apple Push Notification Service)则是苹果消息推送服务器。你本地的服务器当需要给应用推送一条消息的时候,先要将消息发出到苹果推送服务器,然后再由苹果推送服务器将消息发到安装了该应用的手机。
接下来再看一张解释图:
根据上图的逻辑:
1. iOS应用需要去注册APNS消息推送功能;
2.当苹果APNS推送服收到来自你应用的注册消息就会给客户端返回一串device token(很重要);
3.将应用收到的device Token传给本地的Push服务器;
4.当你需要为应用推送消息的时候,你本地的推送服务器会将消息;以及Device Token打包发送到苹果的APNS服;
5.APNS再将消息推送给目的iphone。
证书分为开发推送证书和生产推送证书,当在开发真机测试时使用开发推送证书.p12,在AdHoc(打包测试)及上线时使用生产推送证书.p12。
三、后台集成推送环境(集成以开发环境为实例)
接下来我们打开终端将他们生成.pem文件:
1. 把aps_development .cer文件生成.pcm文件,cd到push文件夹下
yangliang:~ apple$ openssl x509 -in aps_development.cer-inform der -out PushCert.pem
2. 将开发证书p.12生产.pem文件:
yangliang:Jpush apple$ openssl pkcs12 -nocerts -outPushCertKey.pem -in 生产证书.p12
进行该步骤是要验证证书的秘钥(需要验证两次密码ABC123)
Enter Import Password:
MAC verified OK
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
yangliang:Jpush apple$
上边输入的密码则是你导出证书所设的密码,即ABC123 接着还会让你输入.pem文件的密码,还是使用ABC123好了,防止混淆。
这样我们在push文件夹中就又得到了两个文件,。
3. 把PushCert.pem和PushCertKey.pem合并为一个pem文件:
yangliang:Jpush apple$ cat PushCert.pem pushCertKey.pem> ck.pem
在push文件夹中又多了一个ck.pem文件,以上我们把需要使用的文件都准备好了
四、测试环境
为了测试证书工作的状况,我们可以使用“telnet gateway.sandbox.push.apple.com2195”来检测一下,如果显示:
yangliang:Jpush apple$ telnetgateway.sandbox.push.apple.com 2195
Trying 17.188.137.58...
Connected to gateway.sandbox.push-apple.com.akadns.net.
Escape character is '^]'.
则表示成功。
最后使用我们生成的证书和私钥来设置一个安全的链接去链接苹果服务器:
yangliang:Jpush apple$ openssl s_client -connectgateway.sandbox.push.apple.com:2195 -cert PushChatCert.pem -key PushKey.pem
需要输入密码(