iOS 环信apns离线推送相关deviceToken和证书等问题

用过环信的知道,环信在APP挂在后台超过3分钟或者被kill之后,是不会收到消息了的,如果想要能继续接受消息,需要注册apns离线推送。在调试期间遇到一些棘手问题,现总结如下:

先附上环信社区配置apns的问题详解:http://www.imgeek.org/article/825307548

1、添加推送证书

首先我们需要从开发者网站生成推送证书,开发环境和生产环境,两个,安装好之后钥匙串中应该可以看到,这里不多说证书制作的问题,环信文档里面有。

如果你之前就有保存,确保他们是正确的证书,也就是与你的APP bundle id 对应。

2、获取不到deviceToken

按照集成文档,代码里面注意填写apnsCertName,并注册apns推送,这时候问题来了,deviceToken拿不到!

排查:

看是否你的APP里接入了多个需要获取deviceToken的SDK,比如极光推送和环信,如果你是用两个分类来处理极光和环信的话(AppDelegate+JPush,AppDelegate+EaseMob),这两个分类里都有实现didRegisterForRemoteNotificationsWithDeviceToken此方法,那可能有一个方法不走,被后执行的那个覆盖掉了,就会出现一个分类里面拿不到deviceToken的情况。

解决:

在能够拿到的那个分类里面,绑定相应的deviceToken。我这里是在极光的分类里,获取deviceToken的方法下,同时调用极光和环信的绑定deviceToken方法!

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
    NSLog(@"deviceToken = %@",deviceToken);
    [JPUSHService registerDeviceToken:deviceToken];
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        [[EMClient sharedClient] bindDeviceToken:deviceToken];
    });
}
(环信3.0和之前版本的方法不一样,注意)

只要绑定了deviceToken,在环信后台即可看到对应账号后面显示了证书名称。

3、绑定了token,收不到通知

绑定了token,环信后台也看到账号后面显示了证书名称,在杀掉APP后还是收不到消息通知。

1)首先确定你的证书是否与你的APP对应(从钥匙串导出p12证书的时候有没有点错证书,代码中写的证书名与环信后台的证书名是否对应);

2)如果对应,可以把证书以及证书密码,bundle id发给环信,让他们帮助看看该证书是否可收到通知(其实还是确定你的证书有没有添加对,如果环信那边测试也不能收到,您还是重新生成一次证书吧);

3)如果确定证书是对的,再看看targets->capabilities下的两个开关有没有打开,如果没打开,打开再试试。(我就是这一步没操作导致收不到,环信说Xcode8要注意打开,可我用的Xcode7也要打开!)


好了,暂时遇到这么些问题,离线推送配置也是挺烦的。。。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值