前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >即时通信IM-离线推送使用及常见问题

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

原创
作者头像
erickyan
修改2022-04-14 16:11:33
6.5K0
修改2022-04-14 16:11:33
举报

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)如何查询用户状态:

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) 接收端是否有设置获取自定义内容
获取透传自定义内容
获取透传自定义内容

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.前言
  • 2.概述
  • 3.用户状态的理解
    • 1)能够收到离线推送的情况
      • 2)如何查询用户状态:
      • 4.收不到推送的可能原因及排查
      • 5.典型case
        • 1)小米推送一直收不到
          • a) 可以按照上方【收不到推送的可能原因及排查】的内容进行排查下
          • b) 核实在IM控制台配置的小米证书是否配置了ChannelID,及小米开发平台是否也配置了ChannelID
          • c) 控制台 用户状态检查工具 进行查看下用户状态
          • d) 控制台 离线推送定位工具 进行自助定位下
        • 2)华为手机能收到推送,但透传自定义内容获取不到
          • a) 由于华为推送的兼容性问题,透传内容只能在部分 EUI10+ 的设备上收到。
          • b) 核实发送消息是是否携带了自定义内容
          • c) 接收端是否有设置获取自定义内容
      相关产品与服务
      即时通信 IM
      即时通信 IM(Instant Messaging)基于腾讯二十余年的 IM 技术积累,支持Android、iOS、Mac、Windows、Web、H5、小程序平台且跨终端互通,低代码 UI 组件助您30分钟集成单聊、群聊、关系链、消息漫游、群组管理、资料管理、直播弹幕和内容审核等能力。适用于直播互动、电商带货、客服咨询、社交沟通、在线课程、企业办公、互动游戏、医疗健康等场景。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档