常见问题

Android

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

特殊情况排查

OPPO 手机
OPPO 手机收不到推送一般有以下几种情况:
按照 OPPO 推送官网要求,在 Android 8.0 及以上系统版本的 OPPO 手机上必须配置 ChannelID,否则推送消息无法展示。配置方法可以参见 setAndroidOPPOChannelID
OPPO 安装应用通知栏显示默认关闭,需要确认下开关状态。
Google FCM
收不到推送需要确认下 IM 控制台是否正确上传证书。排查路径参见文档 IM 控制台配置 > Google FCM,对照示意图看下是否添加正确。
小米和 vivo
小米和 vivo:需要上架应用市场后,才可以通过厂商通道进行下发。一般会提示:应用在黑名单中,禁止发送消息。或者,该 App 已关闭 push 通道。
发送消息为自定义消息
自定义消息的离线推送和普通消息不太一样,自定义消息的内容我们无法解析,不能确定推送的内容,所以默认不推送,如果您有推送需求,需要您在 sendMessage 的时候设置 offlinePushInfodesc 字段,推送的时候会默认展示 desc 信息。
设备通知栏设置影响
离线推送的直观表现就是通知栏提示,所以同其他通知一样受设备通知相关设置的影响,以华为为例:
手机设置 > 通知 > 锁屏通知 > 隐藏或者不显示通知,会影响锁屏状态下离线推送通知显示。
手机设置 > 通知 > 更多通知设置 > 状态栏显示通知图标,会影响状态栏下离线推送通知的图标显示。
手机设置 > 通知 > 应用的通知管理 > 允许通知,打开关闭会直接影响离线推送通知显示。
手机设置 > 通知 > 应用的通知管理 > 通知铃声手机设置 > 通知 > 应用的通知管理 > 静默通知,会影响离线推送通知铃音的效果。
消息分类
厂商推送都有消息分类机制,不同类型也会有不同的推送策略,详情请参见 推送消息分类
厂商特性
离线推送依赖厂商能力,一些简单的字符可能会被厂商过滤不能透传推送,建议使用有意义的内容进行推送。

自助推送排查工具

设备推送插件接入是否正常
在 IM 控制台通过 离线测试工具 自测下是否可以正常推送。
推送链路排查
使用 排查工具 查看推送全链路推送详情。

跳转界面不成功怎么排查?

点击跳转配置检查

详见 自定义点击跳转,检查:
控制台配置点击后续动作按如下配置,选择打开应用内指定界面,插件用户会默认填写跳转参数,参数是否被修改。
注册和回调处理点击事件,注册时机建议放在应用 Application 的 oncreate() 函数中,需要放在应用生命周期的靠前位置。
点击回调处是否正确处理跳转逻辑。

设备系统权限限制

应用进程不存在,单击通知栏跳转到应用界面,需要将应用从后台拉取到前台,部分厂商系统会去检查 App 是否开启了后台自启动悬浮窗权限,不开启系统侧会拦截处理导致失败。
不同厂商、同一厂商不同 Android 版本,其对于应用开放的权限以及权限名称会存在不一致。经测试,小米6只需要开启后台弹出界面权限,而红米需要同时打开后台弹出界面和显示悬浮窗权限,需要针对不同厂商不同处理。

推送链路排查

使用 排查工具 查看推送全链路推送详情。

其他问题

华为
华为推送证书 ID <= 11344 ,使用华为推送 v2 版本接口,不支持触达和单击回执,如需要统计数据功能,请重新生成更新证书 ID 。
AndroidInfo.ExtAsHuaweiIntentParam,传“1”表示将透传内容 Ext 作为 Intent 的参数,“0”表示将透传内容 Ext 作为 Action 参数。restapi 使用“1”暂时不支持点击事件统计。
数据统计功能
只会记录最后一个登录设备的推送数据详情,不支持多端登录场景。
Debug 版本的 App 功能正常,Release 版本的 App 功能出现异常
出现此问题很大概率是混淆导致的,可以添加如下混淆规则:
-keep class com.tencent.qcloud.** { *; }
-keep class com.tencent.timpush.** { *; }
解决接入 TIMPush 和其他友商产生冲突问题
原因是应用程序自身集成或者依赖的第三方推送客户端,与 TIMPush 中的第三方客户端产生冲突,需要仅保留一个使用。具体方法请参见:TIMPush 集成冲突解决

iOS

普通消息为什么收不到离线推送?

首先,请检查下 App 的运行环境和证书的环境是否一致,如果不一致,收不到离线推送。
其次,检查下 App 和证书的环境是否为生产环境。如果是开发环境,向苹果申请 deviceToken 可能会失败,生产环境暂时没有发现这个问题,请切换到生产环境测试。

自定义消息为什么收不到离线推送?

自定义消息的离线推送和普通消息不太一样,自定义消息的内容我们无法解析,不能确定推送的内容,所以默认不推送,如果您有推送需求,需要您在 sendMessage 的时候设置 offlinePushInfodesc字段,推送的时候会默认展示 desc 信息。

如何关闭离线推送消息的接收?

如果您想关闭离线推送消息的接收,可以通过设置 setAPNS 接口的 config 参数为 nil 来实现。该功能从5.6.1200 版本开始支持。

收不到推送,且后台报错 bad devicetoken。

Apple 的 deviceToken 与当前编译环境有关。如果 登录 IMSDK 后上传 deviceToken 到腾讯云 所使用的证书 ID 和 token 不一致,就会报错。
如果使用的是 Release 环境编译,则 - application:didRegisterForRemoteNotificationsWithDeviceToken: 回调返回的是发布环境的 token,此时 businessID 需要设置生产环境的 证书 ID
如果使用的是 Debug 环境编译,则 - application:didRegisterForRemoteNotificationsWithDeviceToken: 回调返回的是开发环境的 token,此时 businessID 需要设置开发环境的 证书 ID
V2TIMAPNSConfig *confg = [[V2TIMAPNSConfig alloc] init];
/* 用户自己到苹果注册开发者证书,在开发者帐号中下载并生成证书(p12 文件),将生成的 p12 文件传到腾讯证书管理控制台,控制台会自动生成一个证书 ID,将证书 ID 传入以下 busiId 参数中。*/
//推送证书 ID
confg.businessID = sdkBusiId;
confg.token = self.deviceToken;
[[V2TIMManager sharedInstance] setAPNS:confg succ:^{
NSLog(@"%s, succ, %@", __func__, supportTPNS ? @"TPNS": @"APNS");
} fail:^(int code, NSString *msg) {
NSLog(@"%s, fail, %d, %@", __func__, code, msg);
}];

iOS 开发环境下,注册偶现不返回 deviceToken 或提示 APNs 请求 token 失败?

此问题现象是由于 APNs 服务不稳定导致的,可尝试通过以下方式解决:
1. 给手机插入 SIM 卡后使用4G网络测试。
2. 卸载重装、重启 App、关机重启后测试。
3. 打生产环境的包测试。
4. 更换其它 iOS 系统的手机测试。

iOS 没有收到触达回执

1. 上报推送触达数据,需要开启控制台开关来支持 iOS 10 的 Extension 功能,详情请参见 统计推送抵达率
2. 为保证上报数据在一些异常情况下不丢失,iOS 推送数据的上报会在下次登录时候才上报,可能会有滞后,请尝试重新登录。

iOS 证书过期

在 IM 控制台单击编辑对应证书,更新下 p12 证书即可。需要注意的是:请勿删除证书重新创建,重新创建证书 ID 会变化,需要发版本支持更新。

iOS 统计上报功能

上报推送触达数据,需要开启此开关来支持 iOS 10 的 Extension 功能,详情请参见 统计推送抵达率

其他问题

收不到推送,插件费用到期

推送插件试用或购买到期后,将自动停止提供推送服务(包括普通消息离线推送、全员/标签推送等服务)。为避免影响您业务正常使用,请提前 购买/续费

提供推送接入方法对比

接入方法
集成方式对比
功能对比
插件快速集成:
不再需要逐个厂商填写配置,控制台下载引入 json 配置文件,即可完成所有手机厂商的推送信息配置;
支持按需集成一个或者多个对应厂商的推送渠道包,更加满足合规要求;
不需要客户处理推送注册、token 上报、前后台状态上报等,接入后插件自动闭环;
不再需要关注和添加打点和上报逻辑,开启功能后插件自行上报和汇总,支持链路排查和指标统计等;
插件封装界面跳转、图标自定义等方法,直接使用即可;
普通消息推送
全员标签推送
自定义界面跳转
推送自定义样式
设备推送状态查询
全链路排查工具
推送记录和指标统计分析
源码自行集成(不再支持维护,可能会存在推送失败、组件不适配等问题,待下架)
普通消息推送
文档自行集成
普通消息推送

交流与反馈

欢迎加入腾讯云即时通信 IM 社群进行技术交流和反馈。