iOS Developer

IOS 推送总结

2016-10-19  本文已影响152人  damonzero1991

此文主要以证书生成配置为主,实现简单推送,部分截图与内容来自于互联网,若对大家有所帮助,还请给个赞O(∩_∩)O~~。如有误,请指出,一起探讨。

一、 推送原理


Provider是指某个iPhone软件的Push服务器。APNS 是Apple Push Notification Service(Apple Push服务器)的缩写,是苹果的服务器。上图可以分为三个阶段。

  1. 应用程序注册消息推送。
  2. IOS跟APNS Server要deviceToken。应用程序接受deviceToken。
  3. 应用程序将deviceToken发送给PUSH服务端程序。
  4. 服务端程序向APNS服务发送消息。
  5. APNS服务将消息发送给iPhone应用程序。无论是iPhone客户端跟APNS,还是Provider和APNS都需要通过证书进行连接的。

二、 证书的创建

1. 创建本地请求证书文件--CertificateSigningRequest

2. 进入苹果开发者网站,生成证书以及profiles

依次选择Member Center - Certificates, Identifiers &Profiles - Certificates

C95BD68F-E6FA-49F4-8ECB-C72902F41D4D.png
选择当前要设置通知的APP IDs
这里我以新建一个APP IDs为例,若公司已有项目APP IDs,则略过此步
选择右上角"+"号创建一个APPID
填写name以及Bundle ID
A93F9CAF-20CA-47B8-8DA2-B46AF441C089.png
Bundle ID需要与Xcode里项目Bundle ID一致
6F810F29-E7DF-4190-A069-457036873A10.png
勾选push notification 并完成提交
找到刚创建好的APP IDs,可以看到下面的通知选项处提示Configurable,表示证书还没配置,点击Edit进行编辑
这里看到推送证书分为2个版本,一个开发模式,一个生产模式,即我们在开发测试时使用开发模式证书,发布上线后采用生产模式证书,两个都要创建(本次只作开发模式演示,当然创建生产版证书的步骤也是一样的)
Choose File选择最开始创建在桌面的Request文件
1F5ABE01-3DD1-487D-B7D4-8470FE2FD686.png
创建证书OK后 下载到本地
86A5F026-7B97-41C4-A6BB-C3D7341D8A23.png
开发版和生产版证书都创建好后,此时这里已经都是启用状态了。
生成XCODE使用的provisioning文件,该文件用于真机调试:
0D1B1B3A-FAB6-47BD-A721-C391CC63F0F8.png
生成过程:
进入developer.apple.com,选择member center - Certificates, Identifiers & Profiles - Provisioning Profiles,然后选择创建Provisioning file,接着选择iOS App Development ,下一步选择AppId,选中之前建立的支持push的appid,接着下一步选择支持push的certificate,下一步勾选需要支持的device id,最后一步设置provisioning文件的文件名,这样provisioning文件就生成了。

3. 生成服务端使用的证书文件

openssl pkcs12 -clcerts -nokeys -out apns-dev-cert-development.pem -in apns-dev-cert-development.p12     
openssl pkcs12 -nocerts -out apns-dev-key-development.pem -in apns-dev-key-development.p12   
 cat apns-dev-cert-development.pem apns-dev-key-development.pem > apns-dev-development.pem

4. 测试证书

执行下面命令:

telnet gateway.sandbox.push.apple.com 2195(apns的测试环境)
telnet gateway.push.apple.com 2195(apns的正式环境)

它将尝试发送一个规则的,不加密的连接到APNS。如果你看到下面的反馈,那说明你的MAC能够到达APNS。按下Ctrl+C关闭连接。如果得到一个错误信息,那么你需要确保你的防火墙允许2195端口,一般这里都不会出现什么问题。


终端显示

下面我们使用生成的SSL证书和私钥来设置一个安全的链接去链接苹果服务器,执行命令如下:

openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert apns-dev-cert-development.pem -key apns-dev-key-development.pem

执行之后需要输入密码,就是上面我们设置的密码即可。
如果链接是成功的,你可以随便输入一个字符,按下回车,服务器就会断开链接,如果建立连接时有问题,OpenSSL会给你返回一个错误信息。
输出结果如下,则说明是正确链接了,把上述合并的apns-dev-development.pem给服务端使用。


ECCD5164-A95C-4777-A7CF-EA60D6D73398.png


如果有错误,请检查是否导出正确的推送证书。

上一篇下一篇

猜你喜欢

热点阅读