iOS开发之推送服务
最近在研究iOS的推送问题,遇到了一些问题,最终整理了一下,放在这里和大家分享。
下载和安装推送证书
1、登录苹果开发者账号后,先进入“Member Center”,选择红框标注的“Certificates,Identifiers&Profiles“
2、在打开“Certificates”页面后,选择红框标注的+按钮准备添加一个“Apple Push Notification service SSL“证书
3、如果是用于开发和测试,你就选择”Apple Push Notification service SSL (Sandbox)";如果是用于发布,你就选择“Apple Push Notification service SSL (Production)"这两者之间是有很大区别的,开发版的APP和发布版的APP的Device Token是不同的
4、选择一个能够使用推送SSL证书的应用ID,然后点击“Continue”继续,PS:千万别选错应用ID!
5、创建一个证书签名请求文件
6、点击“Choose File”按钮选择上一步骤创建好的证书签名请求文件,点击“Generate”生成证书
7、点击“Download”下载新的证书文件
8、双击上一步获得证书文件,就能将证书导入钥匙串中
生成和使用PEM文件
1、生成与APNs通信的开发者证书在终端,输入命令:openssl x509 -in aps_development.cer -inform der -out apns_cert_dev.pem
2、从钥匙串中导出P12文件
3、生成与APNs通信的密钥证书在终端,输入命令:openssl pkcs12 -nocerts -out apns_key_dev.pem -in apns_dev.p12
4、如果在生成密钥证书时输入了PEM密码,则在进程启动后第一次加载PEM文件时会要求输入该PEM密码,为了完成密码输入,只能手动启动。所以可以将该PEM密码从密钥证书中分离,以方便能够自动启动服务。在终端中输入命令:openssl rsa -in apns_key_dev.pem -out apns_key_dev_noenc.pem
5、在上面的步骤我们生成了apns_key_dev.pem和apns_cert_dev.pem,我们也可以合并这两个pem文件:cat apns_cert_dev.pem apns_key_dev.pem > ck.pem
6、测试gateway.sandbox.push.apple.com的2195端口是否可用在终端,输入命令:telnet gateway.sandbox.push.apple.com 2195
7、使用我们在上几个步骤中生成的证书和密钥来设置一个安全的连接openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert apns_cert_dev.pem -key apns_key_dev_noenc.pem
8、输入任意字符串,回车后就能断开连接
9、上述步骤是生成开发和测试用的PEM文件,生成发布用的PEM文件的方式一样。