iOS 极光证书过期

文章源地址:http://www.xiaomeiti.com/note/3625

这里要说的是这个推送证书的有效期是1年,如果到期没有及时更新,会导致消息推送失败。那么下面就说下如何更新IOS消息推送证书:

1. 首先需要一个MAC电脑,然后打开钥匙链(Keychain),选择 证书助理/从证书颁发机构请求证书,电子邮件就填写Apple Developer的apple id,最后会生成一个CertificateSigningRequest.certSigningRequest文件,这个文件后面会用到。

2. 打开:https://developer.apple.com/account/ios/identifier/bundle 然后选择你的App ID,点击会展开一个功能列表,点击下方的Edit按钮,在Push Notifications下面会看到:Development SSL Certificate和Production SSL Certificate,如果你之前已经有推送证书,在这里也会看到有效期什么的。

3. 在Development或者Production下面点击 Create Certificate 按钮,会出现一个确认页面,点击Continue/继续,会需要上传第一步生成的文件(Select .certSigningRequest file saved on your Mac.)选择文件之后,点击下面的Continue/继续按钮,会提示创建证书成功,这个时候我们可以点击download下载一个扩展名为cer的文件(aps.cer)。

4. 在Mac机器上双击下载的aps.cer文件,会在钥匙链(Keychain)中打开,然后选中该证书,导出为一个p12证书文件,这个p12文件就是服务器端推送消息需要使用的。在导出过程中需要设置证书密码,这个密码一定要牢记,后面服务器推送也需要这个密码。

5. 拿着生成好的p12文件,然后在服务器端做好测试,确实可以用新证书推送消息到设备,我们就可以把证书更新到服务器了,把老的证书覆盖即可。

6. Apple Developer里面老的证书,这个时候可以移除了,或者就放在那里也可以,等它自动过期即可。

7.不管第一次配置极光,或极光证书过期需要更换都需要重新生成一个Provisioning Profile(描述文件)文件。

查询到的更换证书收不到推送消息的原因:

1.当前上传的p12证书密码输入有误;

2. 证书导出的时候展开了证书,把个人私钥导了出来,导证书的时候请不要展开证书;

3.当前上传的证书环境不对,如:在上传开发证书的地方上传了生产证书;

4.该证书已在本账号的其它应用使用;

5.现上传的证书与当前应用已上传成功的证书的bundle id不一致。

6.没有重新创建和添加Provisioning Profile(描述文件)

总结&注意:

前面的几步虽然也重要,但就算有一步做错了也无所谓,大不了重新再来,但是第5步测试确认新证书非常关键,一定要要确认好,不然更新一个无效的证书,服务器无法推送就会造成故障了。如果自己做消息推送,后端不用自己去写推送代码,在这里推荐一个:APNS4j,比较好用:https://github.com/RamosLi/dbay-apns-for-java

package test;

import com.dbay.apns4j.impl.ApnsServiceImpl;

import com.dbay.apns4j.IApnsService;

import com.dbay.apns4j.model.*;

import java.io.InputStream;

public class ApnsPush {

private static IApnsService apnsService;

private static IApnsService getApnsService() {

if (apnsService == null) {

ApnsConfig config = new ApnsConfig();

InputStream is = ApnsPush.class.getClassLoader().getResourceAsStream("Certificates_Pro.p12");

config.setKeyStore(is);

config.setDevEnv(false);

config.setPassword("xxxxx");

config.setPoolSize(5);

apnsService = ApnsServiceImpl.createInstance(config);

}

return apnsService;

}

public static void main(String args[]){

try

{

String token = "01e983ed 662d7184 1454dbc4 35bd2a49 f5966ada 967f7b3f c0f68f03 09d454b8";

Payload payload = new Payload();

payload.setAlert("Hello, how are you?");

payload.setBadge(3);

payload.setSound("default-sound");

getApnsService().sendNotification(token, payload);

}

catch (Exception ex)

{

ex.printStackTrace();

}

}

}

你可能感兴趣的:(iOS 极光证书过期)