Android 厂商推送相关问题

最近更新时间:2026-04-24 17:24:33

我的收藏

概况问题

收不到离线推送怎么排查?

排查分两种:
1. 自助推送排查工具:
设备推送插件接入是否正常:在 IM 控制台通过 离线测试工具 自测是否可以正常推送。
推送链路排查:使用 排查工具 查看推送全链路推送详情。
2. 特殊情况排查:
场景
排查要点
OPPO 手机
OPPO 手机收不到推送一般有以下几种情况:
按照 OPPO 推送官网要求,在 Android 8.0 及以上系统版本的 OPPO 手机上必须配置 ChannelID,否则推送消息无法展示。配置方法可以参见 setAndroidOPPOChannelID
OPPO 安装应用通知栏显示默认关闭,需要确认下开关状态。
Google FCM
收不到推送需要确认下 IM 控制台是否正确上传证书。排查路径参见文档 厂商配置 > Google FCM,对照示意图看下是否添加正确。
小米/vivo
需要上架应用市场后,才可以通过厂商通道进行下发。一般会提示:应用在黑名单中,禁止发送消息。或者,该 App 已关闭 push 通道。
自定义消息
自定义消息的离线推送和普通消息不太一样,自定义消息的内容我们无法解析,不能确定推送的内容,所以默认不推送,如果您有推送需求,需要您在 sendMessage 的时候设置 offlinePushInfodesc 字段,推送的时候会默认展示 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 推送回调,是为什么?

1. 请确认 服务端客户端 下发消息时,是否设置“推送信息”,未设置则收不到 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.** { *; }