美文网首页
iOS 极光证书过期

iOS 极光证书过期

作者: puple瞳眸 | 来源:发表于2016-12-04 20:39 被阅读390次

    文章源地址: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 极光证书过期

          本文链接:https://www.haomeiwen.com/subject/egohmttx.html