使用腾讯云即时通信IM离线推送过程中经常遇到的一些问题

当前使用腾讯云产品 即时通信IM离线推送功能的用户越来越多,在使用的过程中,难免遇到一些问题,这里就整理了一些常见case,供各位网友参考,如果不对之处,也请谅解!

1.关于即时通信IM中的用户的3种状态

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

  服务端依赖心跳包超时来进行判断,当客户端和服务端之间持续 400 秒没有心跳包时,即时通信 IM 服务端认为该用户异常下线(Android 版本较多出现此情况)
  心跳:IM SDK 每隔2分钟发一个心跳包给服务器,以维持用户的在线状态。
  即时通信 IM 后台只会保存 PushOnline 状态7天时间,若从掉线时刻起7天之内未登录过,则进入 Offline 状态。

  当进入PushOnline状态时,消息才会通过离线推送的通道进行投递,所以需要关注下用户的状态。

2.控制台自助排查工具

可以在控制台输入用户ID,查询下用户状态,是否为PushOnline,当是PushOnline是,进行尝试检测下
离线推送定位工具

3.常见问题整理

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

  2. 安卓应用切到后台,为什么没有收到离线消息?
     1)在手机厂商的官方控制台测试是否能收到推送
     2)确认手机设置是否打开接收推送的开关
     3)通过sendOnlineMessage发送的消息,或者restApi发送消息的时候设置了lifetime为0
     4)更改推送证书时,有10-20min延时,此期间收不到推送
     5)安卓app进程退到后台,并不会马上被系统kill,im还是Online在线状态,不会有离线消息投递下来;
      将进程kill掉、或断网掉线持续400秒(客户端和服务端之间持续 400 秒没有心跳包时,即时通信 IM 服务端认为该用户异常下线),用户状态转为PushOnline,此时有离线消息投递下来;
    即时通信 IM 后台只会保存 PushOnline 状态7天时间,若从掉线时刻起7天之内未登录过,则进入 Offline 状态。
     使用辅助工具定位下:
      https://console.cloud.tencent.com/im-detail/tool-push-check

  3. 安卓应用切到后台,没kill掉时,如何让消息弹出提醒
     应用切到后台,为Online状态,客户端和IM后台有长连接,消息会通过新消息接口触发onNewMessages,需要开发者在应用层判断当前是在前台还是后台,在后台时就弹出通知栏。

  4. iOS用苹果官网推送可以收到离线消息,但是app发的离线消息收不到?
     说明获取token没问题,有可能上报token错误、或者证书错误。
     比较常见的原因是:
      ios开发环境、生成环境用的证书不同,请先确认上报的是哪个环境的证书,容易弄混
      苹果官网的证书过期、密码错误等原因

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

  6. 安卓点击通知栏,可以跳转到指定页面吗
     可以的,参考文档:
      https://cloud.tencent.com/document/product/269/35000#.E6.89.93.E5.BC.80.E5.BA.94.E7.94.A8.E5.86.85.E6.8C.87.E5.AE.9A.E7.95.8C.E9.9D.A2

  7. 通知栏显示离线消息,点击打开应用,进入到会话界面,怎么获取到这个离线消息?
     离线推送的消息,不会触发onNewMessages,进入会话界面时,通过拉取漫游消息进行获取并进行ui展示。

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

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

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

  11. 离线推送定位工具提示:“证书有误”
     检查控制台证书配置的AppID、AppSecret信息是否配置的和对应厂商推送后台显示的信息是否一致
    证书有误

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

  13. 安卓通知栏,可以定制样式吗,比如排版、图标、提示音等
      暂时还不支持,只能根据系统默认的样式,其中小米是支持的,但也比较有局限性,具体参考小米官方离线推送文档。云通信sdk还在优化中,后续会考虑支持

  14. iOS使用定位工具,显示:成功推送,但无法接收
      按照提示检查设备通知功能是否开启
    成功推送

  15. iOS端提示:接收方没有上报证书ID
     可以检查下上报的证书ID是否正常。
     确认正常可以看下证书环境是否正常。
    没有上报证书

  16. iOS如何实现跳转指定页面
     做消息跳转需要先了解点击推送触发的几个方法,可以参考下网上的文章:
      https://juejin.im/post/5b4f0828e51d45195423c585
     点击推送触发的几个方法如上,每个用户的需求都是不一样的,跳转指定页面需要业务侧自行实现,可以在推送扩展字段EXT携带信令
      https://cloud.tencent.com/document/product/269/2720#.E8.87.AA.E5.AE.9A.E4.B9.89.E6.B6.88.E6.81.AF.E5.85.83.E7.B4.A0
    在这里插入图片描述
     举例说明: A给B发送了消息,ext携带了消息类型和发送方ID, B应用处于后台或者杀死状态 收到了离线通知,点击对应通知跳转到聊天页面
    在这里插入图片描述

4.各平台错误码

(1) 服务端错误码参考(小米开放平台)
  https://dev.mi.com/console/doc/detail?pId=1557
(2)错误码(华为推送服务)
  https://developer.huawei.com/consumer/cn/doc/development/HMS-References/push-ErrorEnum4
  https://developer.huawei.com/consumer/cn/doc/development/HMS-Guides/push-faq-v4#h1-1577153305362-0
(3)错误码参考(vivo开放平台)
  https://dev.vivo.com.cn/documentCenter/doc/226
(4)错误码参考(oppo推送平台)
  https://storepic.oppomobile.com/openplat/resource/201910/18/OPPO%E6%8E%A8%E9%80%81%E5%B9%B3%E5%8F%B0%E6%9C%8D%E5%8A%A1%E7%AB%AFAPI-V1.9.3.pdf

5.参考文档链接

IM产品概述
离线推送介绍
离线推送faq
收不到推送时,如何排查问题?
IMSDK离线推送

如有整理不对之处,还望指出,以便更改!

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值