收不到推送问题

离线推送和本地通知的区别:

本地通知:

本地通知指应用在前台或后台运行时,由应用客户端直接调用系统接口创建并发送的通知(Notification)。客户端内部已经实现了本地通知功能 (Notification),当应用处于后台接收到新消息时,默认会在通知面板弹出通知提醒,即本地通知。

离线推送:

应用被杀死之后通过厂商渠道向用户的移动设备发送的消息。

用户杀死应用之后,融云通过第三方手机厂商的推送渠道将消息传到用户的手机上,这种形式被称为离线推送。

应用程序进入到后台后最多活跃 2 分钟,此时 IM 连接仍然存在,应用程序可以通过 IM 连接接收实时消息。如果应用程序集成了 IMKit SDK,收到新消息后 IMKit 会负责在通知栏弹出通知,这种通知称为“本地通知”。

解决方案

离线推送收不到排查步骤:

  1. 首先要确认应用程序的状态。

应用程序的状态可以分成三种:前台状态,后台活跃状态注1(应用程序进入到后台的前 2 分钟)和断开状态注2(用户主动杀死应用或应用程序在后台超过 2 分钟后或者被应用回收)。其中前两种状态是不会推送的。

注意,部分模拟器和真机清理后台应用后,只是清理了 UI 界面,但应用时机并未被杀死。故在测试推送时为了确保应用断开,建议使用结束运行按钮关闭应用后再等待两分钟以上再进行测试。

  1. 接下来还要确认用户是不是还有 web 端也同步在线,这种情况下,如果没有配置开启多端在线推送收取功能的话也是不会给移动端推送的。

  2. 确认用户是否开启了免打扰的功能。

详情参考:融云开发者文档

  1. 如果是部分消息能收到推送,部分消息收不到,有可能是手机厂商限制了推送的频率。可以通过在rcx/fcs后台的推送配置选择合适的消息类型,比如设置消息类型,category等。

  1. 确认下您后台是否配置了对应的证书:

  1. 接下来确认手机 app 正确上报了自己的 deviceid,安卓端日志获取教程

  2. 如果还收不到,提供消息发送时间,消息 msgUid,消息内容,发送者 userid,收件人 userid 等信息,并提供远程工具我们服务端同事远程登录排查下。

注1:

后台活跃状态:应用程序进入到后台后最多活跃 2 分钟,此时 IM 连接仍然存在,应用程序可以通过 IM 连接通过接收实时消息。收到新消息后RCE会负责在通知栏弹出通知,这种通知称为“本地通知”。

注2:

断开状态:应用程序在后台最长超过 2 分钟后进入到暂停状态,SDK 会在此时主动断开 IM 连接,此时应用程序失去了与融云服务器的 IM 连接。在 IM 连接通道 断开的情况下,如果有人给该用户发消息,必须依赖远程推送服务通知用户设备。离线推送通知可直接通过系统在通知栏显示。