一. 离线推送
如果app集成时添加
- (void)applicationDidEnterBackground:(UIApplication *)application {
[[EMClient sharedClient] applicationDidEnterBackground:application];
}
- (void)applicationWillEnterForeground:(UIApplication *)application {
[[EMClient sharedClient] applicationWillEnterForeground:application];
}
App后台静默后,能够保持长连接3分钟左右。超过3分钟,长连接会断开,当前登录的账号,在服务端被认为离线。消息会存入离线消息空间,之后接收的消息会在再次登录后,连接上服务器,然后通过长连接把消息取走,投递给此用户。如果app配置了推送证书,上传了推送证书并且集成了推送功能,服务器会给接收方发一个APNs推送,则会对离线消息进行APNs推送提示消息内容,通知接收方有一条新消息。
如果想自定义推送的alert,可以在发消息的时候,在消息扩展中添加相应的字段。文档见:http://docs.easemob.com/im/300iosclientintegration/apnscontent
所以这里推送说的是当app被杀死或者进入后台三分钟之后的离线推送
消息回调 :app在前台及app进入后台三分钟之内
注意:环信支持推送消息,只是目前还不能根据标签推送给特定用户组,也暂不支持推送模板。CMD消息没有推送,好友请求也没有推送
收不到离线推送时可以从下面几个方面找下原因
1.测试apns推送的时候,接受消息方的app是杀掉状态吗,或者进入后台三分钟以后
2.看看你环信后台上传的证书名称与工程中初始化SDK那里填的证书名 是不是相同的
3.配置证书时候填的id与你工程中的bundle id 是否相同
4.devicetoken有没有传给环信SDK。即查看管理后台中,对应 IM 账户下是否有您刚刚写的证书名。(如果没有,请检查您是否得到了 deviceToken)
5.确认Xcode环境是否配置正确 ,Build Settings---signing,看Debug对应的是不是开发的,Release对应的是不是生产的
6.在确认xcode运行环境是否正确 (Product-->Scheme-->Edit Scheme, 开发证书选Debug,生产证书选Release)
7.证书制作上传过程是否有问题,配置证书的时候是否设置了密码,正确的步骤可以参考:http://www.imgeek.org/article/825308748。另外可以用推送工具进行验证。
8.如果以上都没有问题,可以尝试重新制作上传一下推送证书。
对照这些检查一下,基本上就是这些原因
如果上面几点都符合的话,看下重新登录之后是否可以收到之前收不到推送消息
可以的,话提供一下AppKey,证书名 (查下证书是否被封)以及收不到的推送消息的消息id及发送方和接收方log
log导出请看这篇文章: http://www.imgeek.o