对于APNS证书,要分别制作开发证书和生产证书,不同环境下使用不同的证书,但是对于VoIP证书只有一个,不过在服务端连接通知服务器的时候还是需要区分环境的。
2. 推送证书的制作
-
准备CSR文件
首先我们要有生成一个Certificate Signing Request(也就是CSR)的请求文件。
在应用程序里的使用工具中找到钥匙串访问。
填上你的邮箱和常用名 或者是公司关联账号,常用名要记一下,一会
会用到。
然后选择保存到磁盘,继续
这时桌面上会有一个CertificateSigningRequest.certSigningRequest的请求文件,也就是我们说的CSR文件。在我们生成CSR文件的同时,会在钥匙串访问中生成一对秘钥,名称为刚才我们填写的常用名。当然,在实际开发中,我们需要把这些证书文件放在自己分类的文件夹中。 -
下载开发证书和发布证书
到苹果开发者中心 登录后,在右侧的ios Developer Program里点击iOS Provisioning Portal。
进入下一级页面后在左侧选择Certificates
-
注册项目的Bundle ID
-
创建测试证书和生产证书
导出
.p12
证书
- 点击下载下来去,下载下来后会是一个. cer文件
- 双击文件,(因为你需要生成一个.p12文件才能用)
-
导出证书
同样的方法可以得到开发推送证书,到这里APNS推送证书就都下载好了。如果是用的信鸽的推送平台,则信鸽中会知道你如果去配置信鸽需要的推送证书的链接,信鸽平台中需要的是
.pem
证书,极光推送中需要上传.p12
证书,可能就是这里的问题导致项目在集成信鸽推送之后再单独集成VoIP会导致VoIP消息发送失败的问题。
2.2 VoIP推送证书
VoIP证书的制作过程和APNS推送证书的制作过程雷同,只不过不需要区分开发环境和生产环境,一个bundle ID只需要创建一个VoIP证书。
【tips】如果是先创建的开发证书和发布证书,然后再去创建推送证书,建议在将推送证书创建成功之后就更新一次开发证书和发布证书,避免推送收不到然后又查不出问题。
2.3 配置证书
到这里的时候就应该是6个证书了,三个从开发者中心下载的证书,还有三个.p12
证书
-
制作.pem格式证书
创建VoIP证书为例- 目前我们有两个文件,
voip_services.cer
SSL证书和voip_push.p12
私钥 - 把.cer的SSL证书转换为.pem文件,打开终端命令行cd到证书文件夹、执行以下命令
openssl x509 -in voip_services.cer -inform der -out voip_cert.pem
- 把.p12私钥转换成.pem文件,执行以下命令(这里需要输入之前导出设置的密码)
openssl pkcs12 -nocerts -out voip_key.pem -in voip_push.p12
- 再把生成的两个.pem整合到一个.pem文件中
cat voip_cert.pem voip_key.pem > voip_ck.pem
最终生成的voip_ck.pem
文件一般就是服务器用来推送的。
- 目前我们有两个文件,
同样的步骤可以创建另外两个证书,创建完成之后的文件夹中应该有:
我们需要的所有推送文件都在这里面了
比如信鸽推送需要上传 push_key_dev.pem
和 push_key_dis.pem
证书
极光中需要上传 push_cert_dev.p12
和 push_cert_dis.p12
证书
如果是网易云中有需要使用VoIP功能的,则还需要上传我们做好的 voip_ck.pem
证书
集成VoIP推送看似是简单,但其中会遇到各种坑,如果每次出现问题都要服务器配合测试的话,很难找到问题的根源,而且还浪费时间,所以最好是自己搭建一个简单的测试环境先测试通,然后再与服务器对接。后面会提供服务端源码和一个很牛逼的推送测试工具pusher
。这个时候需要用到的推送证书就是
-
push_key_dev.pem
测试环境APNS推送证书 -
push_key_dis.pem
生产环境APNS推送证书 -
voip_ck.pem
VoIP推送证书