概况问题
收不到离线推送怎么排查?
排查分两种:
1. 自助推送排查工具:
设备推送插件接入是否正常:在 IM 控制台通过 离线测试工具 自测是否可以正常推送。
推送链路排查:使用 排查工具 查看推送全链路推送详情。
2. 特殊情况排查:
场景 | 排查要点 |
OPPO 手机 | OPPO 手机收不到推送一般有以下几种情况: 按照 OPPO 推送官网要求,在 Android 8.0 及以上系统版本的 OPPO 手机上必须配置 ChannelID,否则推送消息无法展示。配置方法可以参见 setAndroidOPPOChannelID。 OPPO 安装应用通知栏显示默认关闭,需要确认下开关状态。 |
Google FCM | |
小米/vivo | 需要上架应用市场后,才可以通过厂商通道进行下发。一般会提示:应用在黑名单中,禁止发送消息。或者,该 App 已关闭 push 通道。 |
自定义消息 | 自定义消息的离线推送和普通消息不太一样,自定义消息的内容我们无法解析,不能确定推送的内容,所以默认不推送,如果您有推送需求,需要您在 sendMessage 的时候设置 offlinePushInfo 的 desc 字段,推送的时候会默认展示 desc 信息。 |
设备通知栏 | 离线推送的直观表现就是通知栏提示,所以同其他通知一样受设备通知相关设置的影响,以华为为例: 手机设置 > 通知 > 锁屏通知 > 隐藏或者不显示通知,会影响锁屏状态下离线推送通知显示。 手机设置 > 通知 > 更多通知设置 > 状态栏显示通知图标,会影响状态栏下离线推送通知的图标显示。 手机设置 > 通知 > 应用的通知管理 > 允许通知,打开关闭会直接影响离线推送通知显示。 手机设置 > 通知 > 应用的通知管理 > 通知铃声和手机设置 > 通知 > 应用的通知管理 > 静默通知,会影响离线推送通知铃音的效果。 |
消息分类 | |
厂商特性 | 离线推送依赖厂商能力,一些简单的字符可能会被厂商过滤不能透传推送,建议使用有意义的内容进行推送。 |
概念解释
推送只能收到两条/几条,测试工具显示发送成功,之后就收不到了,是什么问题?
注意:
每个厂商的消息分类不同,某些需先申请开通,某些厂商申请之后有一定的生效时间。
消息分类字段:通常控制台证书页面可以填写默认值,例如 category。REST API 和客户端接口也都提供了对应的字段或方法,来覆盖控制台默认值,达到有多种分类的效果.
系统服务问题
海外推送指南
1. 海外离线推送支持的厂商有 FCM、华为、OPPO 和 APNs。
2. FCM 通道必备充分条件是:设备可以访问海外网站、设备有安装支持 GMS 服务、成功集成 TIMPush。注意:国内设备大部分没有安装 GMS 服务,无法支持 FCM 推送。
FCM 推送有哪些注意事项?
如果想优先走 FCM 通道,请使用接口 forceUseFCMPushChannel 。
FCM 推送消息可能会拉起应用进程,请不要在应用启动处,即 Application 的 onCreate() 生命周期内做登录、数据上报等不适合高频并发的逻辑。
vivo 推送报错:错误码 "10302",错误信息描述 "用户 ID 不合法"
有 3 种情况:
userid 不存在。
卸载或主动触发解除订阅,或用户清除数据(用户清除数据会使客户端 SDK 触发解除订阅)。
测试推送,设备未加入测试设备集,需要做如下处理:
IM 控制台选择测试推送 | vivo 推送运营后台添加测试设备 |
![]() | ![]() |
支持向三星、中兴、传音、坚果、海信、索尼等手机推送吗?
在线推送支持所有机型,包括三星、中兴、传音、坚果、海信、索尼等。
接入过程问题
跳转界面不成功怎么排查?
1. 点击跳转配置检查
控制台配置点击后续动作按如下配置,选择打开应用内指定界面,插件用户会默认填写跳转参数,参数是否被修改。
注册和回调处理点击事件,注册时机建议放在应用 Application 的 onCreate() 函数中,需要放在应用生命周期的靠前位置。
点击回调处是否正确处理跳转逻辑。
2. 设备系统权限限制
应用进程不存在,点击通知栏跳转到应用界面,需要将应用从后台拉取到前台,部分厂商系统会去检查 App 是否开启了后台自启动或悬浮窗权限,不开启系统侧会拦截处理导致失败。
不同厂商、同一厂商不同 Android 版本,其对于应用开放的权限以及权限名称会存在不一致。经测试,小米 6 只需要开启后台弹出界面权限,而红米需要同时打开后台弹出界面和显示悬浮窗权限,需要针对不同厂商不同处理。
3. 推送链路排查
TIMPush 接入,离线情况下接收新消息能收到推送通知,但在线情况下却收不到 TIMPushListener.onRecvPushMessage 推送回调,是为什么?
2. TIMPush 推送插件是基于 IM SDK 进行封装,两者之间版本需要保持一致,否则使用可能会出现异常,例如:onRecvPushMessage 回调收不到。
TIMPush 插件接入,OPPO 机型,当发送的消息内容过长时对方收不到推送通知?
厂商推送对于 desc 推送内容有长度限制,可在 sendMessage 时设置 V2TIMOfflinePushInfo.desc 内容不超过限制长度。
TIMPush 插件接入,OPPO 机型,推送注册成功后,通过 REST API 下发推送能收到,但是通过客户端发送消息,却收不到消息推送?
1. 通过 REST API 下发消息,用户能收到推送,说明客户端 OPPO 厂商推送配置正常。(默认通知跳转方式为:打开应用)
2. 消息推送场景下,发起消息发送请求时需携带离线推送相关参数(OfflinePushInfo)。客户端 API 提供 V2TIMOfflinePushInfo 入参用于配置该信息,调用时请传入正确的参数内容,具体参数规范及使用方式可参考 发送消息 API 文档 。
TIMPush 接入,编译运行时报关于 “com.huawei.agconnect” 错误,完整报错如下:
Caused by: org.gradle.api.internal.plugins.PluginApplicationException: Failed to apply plugin 'com.huawei.agconnect'.at org.gradle.api.internal.plugins.DefaultPluginManager.doApply(DefaultPluginManager.java:173)at org.gradle.api.internal.plugins.DefaultPluginManager.apply(DefaultPluginManager.java:146)将
classpath 'com.huawei.agconnect:agcp:1.6.0.300' 替换升级为 classpath 'com.huawei.agconnect:agcp:1.9.1.301'。客户端接入推送插件,收不到在线推送,可以收到离线推送?
请确认:
前台开关是否打开(对应 disablePostNotificationInForeground 接口调用)。
发送端消息是否携带有效的 OfflinePushInfo,title 不为空,disablePush 为 false。
接收端在前台。
华为部分设备注册失败,token 为空?
如项目中有引入其它第三方库,可能会影响 token 获取,目前已知 com.github.ihsanbal:LoggingInterceptor 库引入会有问题,Log 日志一般会有:"HMS token within 24h, not allowed apply hms token."。出现此问题时,建议新建空项目来测试,排除其它第三方库的干扰。
推送统计数据问题
Debug 版本的 App 功能正常,Release 版本的 App 功能出现异常 ?
出现此问题很大概率是混淆导致的,可以添加如下混淆规则:
-keep class com.tencent.qcloud.** { *; }-keep class com.tencent.timpush.** { *; }

