即时通信IM-离线推送使用及常见问题

2022-04-14 16:11:33 浏览数 (1)

1.前言

      越来越多的用户选择使用即时通信IM,并结合各厂商提供的系统级推送通道来进行消息通知,在接入使用的过程中,会遇到消息发送后,终端没接到推送的情况,本文档指引可以帮助用户进行一些排查,以便解决遇到的问题。

2.概述

      IM目前已经支持了小米推送、华为推送、魅族推送、vivo 推送、OPPO 推送、Google FCM推送,各个推送通道的系统要求、条件、证书配置、集成等,可以参考此链接文档:https://cloud.tencent.com/document/product/269/44516

3.用户状态的理解

  • "Online":客户端登录后和即时通信 IM 后台有长连接
  • "PushOnline":iOS 和 Android 进程被 kill 或因网络问题掉线,进入 PushOnline 状态,此时仍然可以接收消息的离线推送。(客户端切到后台,但是进程未被手机操作系统 kill 掉时,此时状态仍是 Online。)
  • "Offline":客户端主动退出登录或者客户端自上一次登录起7天之内未登录过

服务端依赖心跳包超时来进行判断,当客户端和服务端之间持续 400 秒没有心跳包时,即时通信 IM 服务端认为该用户异常下线(Android 版本较多出现此情况) 心跳:IM SDK 每隔2分钟发一个心跳包给服务器,以维持用户的在线状态。

即时通信 IM 后台只会保存 PushOnline 状态7天时间,若从掉线时刻起7天之内未登录过,则进入 Offline 状态。

1)能够收到离线推送的情况

  • 当用户状态为PushOnline时,如果配置了离线推送,会收到厂商的离线推送通道下发的通知栏消息。
  • IM_sdk_version_android从5.0.1版本开始,切后台doBackground后,如果配置了离线推送,会收到厂商的离线推送通道下发的通知栏消息。   <u>所以需要查询用户的状态及是否切后台,来确定是否符合推送的条件,只有符合的时候,才会进行推送。</u>

2)如何查询用户状态:

  • 通过restapi接口:https://cloud.tencent.com/document/product/269/2566
  • IM控制台用户状态检查工具:https://console.cloud.tencent.com/im-detail/tool-push-check

4.收不到推送的可能原因及排查

1. 登录前设置token,还是登录成功后? 登录成功后,再调用接口去上报证书id和regid,顺序不要搞反了

2. 安卓应用切到后台,为什么没有收到离线消息? 1)IM_sdk_version_android从5.0.1版本开始,切后台doBackground后,如果配置了离线推送,会收到厂商的离线推送通道下发的通知栏消息。 2)确认手机的设置是否打开接收推送的开关 3)在IM控制台更改推送证书配置时,有10-20min延时,此期间收不到推送

3.集成华为离线推送,为什么注册token时总是提示6003 指纹证书配置不一致,参考:https://developer.huawei.com/consumer/cn/doc/development/HMS-References/push-ErrorEnum4 必须用release包运行,才能注册token成功。这个release包的签名文件,必须是开通华为离线推送服务时填入的证书指纹。   1) 检查是否在华为开发者联盟上配置了正确的证书指纹。   2) 如果检查都正确,请联系华为方支持人员。

4. 已退出登录的用户,是否可以收到离线消息? 对于已经退出登录(主动登出或者被踢下线)的用户,不会收到任何消息通知。

5. 系统消息是否可以通过离线推送通知? 目前,离线推送只提供 普通聊天消息 进行消息提醒,暂不提供对 系统消息 的消息提醒。

6. 为什么有的群组消息收不到离线推送? 1) 确认 TIMGroupReceiveMessageOpt 是否为关闭免打扰的状态:ReceiveAndNotify; 2) 群组类型为聊天室(ChatRoom),音视频聊天室(AVChatRoom),广播大群(BChatRoom) 是不支持离线推送的;

7. 离线推送定位工具提示:“证书有误” 检查控制台证书配置的AppID、AppSecret信息是否配置的和对应厂商推送后台显示的信息是否一致 IM控制台离线推送定位工具:https://console.cloud.tencent.com/im-detail/tool-push-check

控制台自助定位工具控制台自助定位工具

8. 安卓点击通知栏,可以跳转到指定页面吗 可以的,可以参考这个:https://cloud.tencent.com/document/product/269/44516#.E9.85.8D.E7.BD.AE.E7.82.B9.E5.87.BB.E9.80.9A.E7.9F.A5.E6.A0.8F.E6.B6.88.E6.81.AF.E4.BA.8B.E4.BB.B6

9. 小米手机收到离线消息,点击后未打开应用? 1) 是否有onNotificationMessageClicked配置打开应用 2) 获得的intentUri,通过小米推送后台下发,能否打开自定义界面

10. Android 手机离线推送怎么自定义推送的声音? 目前大部分厂商都不支持离线推送声音的设置,因此 IM SDK 暂时不支持。

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

5.典型case

1)小米推送一直收不到

背景:通过其他端发送的消息,在小米机型上一直收到不到推送内容

a) 可以按照上方【收不到推送的可能原因及排查】的内容进行排查下
b) 核实在IM控制台配置的小米证书是否配置了ChannelID,及小米开发平台是否也配置了ChannelID

如果配置了ChannelID,该ChannelID要先向小米申请,且和小米官网保持一致

即时通信控制台配置的证书截图:(IM控制台查询地址:https://console.cloud.tencent.com/im-detail)

IM控制台查看证书信息IM控制台查看证书信息

小米推送平台对应位置:如果小米推送平台没有配置,点击新增一个,ChannelID值和IM控制台配置的ChannelID值保持一致。

小米开放平台小米开放平台
c) 控制台 用户状态检查工具 进行查看下用户状态

地址:https://console.cloud.tencent.com/im-detail/tool-push-check

IM控制台查看用户状态IM控制台查看用户状态
d) 控制台 离线推送定位工具 进行自助定位下

地址:https://console.cloud.tencent.com/im-detail/tool-push-check

按照检测结果,进行核实小米手机是否在手机设置中开启了通知功能

IM控制台自助定位工具IM控制台自助定位工具

2)华为手机能收到推送,但透传自定义内容获取不到

a) 由于华为推送的兼容性问题,透传内容只能在部分 EUI10 的设备上收到。

   i) 之前华为推送回调是通过onEvent回调的,IM后台对接的是华为的V2接口,在这种情况下,想要获取ext字段,必须通过华为的onEvent回调获取;

    参考文档:https://developer.huawei.com/consumer/cn/doc/development/HMS-2-Guides/hmssdk_huaweipush_devguide_client_agent#h2-1575281121280

   ii) 目前已经切到华为的V4推送接口进行使用 (华为证书ID > 11344的走华为v4接口,否则走V2),请核实这里的证书ID值

   iii) 目前emui10.0以上的版本是正常的,在emui10.0以下系统可能会出现问题。

    https://cloud.tencent.com/document/product/269/44516#.E9.80.8F.E4.BC.A0.E8.87.AA.E5.AE.9A.E4.B9.89.E5.86.85.E5.AE.B92

注意事项注意事项
b) 核实发送消息是是否携带了自定义内容

  i) 客户端发送消息时,携带自定义内容:

发送消息携带自定义内容发送消息携带自定义内容

  ii) 服务端发送消息时,携带自定义内容:

  服务端restapi接口(OfflinePushInfo字段):

    https://cloud.tencent.com/document/product/269/2282#.E8.AF.B7.E6.B1.82.E5.8C.85.E5.AD.97.E6.AE.B5.E8.AF.B4.E6.98.8E

  离线推送 OfflinePushInfo 说明:

    https://cloud.tencent.com/document/product/269/2720#.E7.A6.BB.E7.BA.BF.E6.8E.A8.E9.80.81-offlinepushinfo-.E8.AF.B4.E6.98.8E

推送内容格式推送内容格式
c) 接收端是否有设置获取自定义内容
获取透传自定义内容获取透传自定义内容

0 人点赞