APNS即Apple Push Notification Service,中文翻译为苹果推送通知服务。特点是稳定、方便,不足是没有送达结果的统计,所以衍生了针对此服务的第三方推送。比如极光推送、leancloud等,很大程度上减少了服务端的开发量。本文主要介绍APNS的开发调试及部署上线的流程。客户端准备工作如下:
创建Certificates
进入苹果开发者中心,打开App IDs,找到Xcode工程对应的Bundle ID,即可看到Push Notifications选项开发与生产配置分别为Configurable,点击Edit,进入下一步Create Certificate,如下图所示。
生成Cer文件的过程中需要本地生成一个.certSigningRequest文件上传
如何生成 Certificate Signing Request
打开mac系统中的Keychain,在证书助理中选择从证书颁发机构请求证书,填写邮箱保存本地即可。如下图:
生成CSR文件后上传,即可生成Developerment版的cer证书,下载证书到本地,双击安装到钥匙串中,然后打开钥匙串找到刚在安装的cer证书,点击导出,选择个人信息交换(.p12)格式。
完成上述操作后,打开终端,进入p12文件所在文件夹,执行以下命令,生成服务端push所用的pem证书就可以了。
openssl pkcs12 -in XXX.p12 -out XXX.pem -nodes
查看证书有效期:
openssl x509 -in xxx.pem -noout -dates
返回结果:
notBefore=Nov 6 07:55:33 2015 GMT
notAfter=Nov 5 07:55:33 2016 GMT
连接APNS测试证书是否合法:
// Development 环境
openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert xxx.pem -key xxx.pem
// Distribution 环境
openssl s_client -connect gateway.push.apple.com:2195 -cert xxx.pem -key xxx.pem
合法返回结果:
Protocol : TLSv1
Cipher : AES256-SHA
Session-ID:
Session-ID-ctx:
Master-Key: 30AF233C50CBEB51B7358BA47E6B4D556CC962BC288F6D51E68300D86400F927925077B5B90C4938B189146E0A4897B2
Key-Arg : None
Start Time: 1446972326
Timeout : 300 (sec)
Verify return code: 0 (ok)
如何测试
Developer环境下的测试推荐一个mac上的app,Cocoa-APNS-Test,部署简单方便。Production环境下的测试则需要Adhoc证书的支持了,具体操作请参考这里。