Skip to content

未读消息与红点 ​

客户问完就切回商品页了,客服十分钟后回复。让他知道有新消息,靠的是 APP 入口上的那个红点。

这是什么 ​

SDK 可以告诉你「这位客户现在有几条没看的消息」,你拿到数字之后画在自己的界面上:「我的」页面里的客服入口、底部 Tab、首页悬浮按钮,画在哪里由你决定。

开启 ​

未读跟踪默认关闭,没开时 SDK 在客服页面之外不发任何请求。调一次 startUnreadTracking 才开始工作:

kotlin
// Android
HecongChat.startUnreadTracking(object : HecongChatListener {
    override fun onUnreadChanged(count: Int) {
        updateBadge(count)   // count 是当前未读数,0 表示没有未读
    }
})
swift
// iOS:让你的对象实现 HecongChatDelegate
func hecongChatUnreadDidChange(_ count: Int) {
    updateBadge(count)
}

HecongChat.shared.startUnreadTracking(listener: self)

回调会在未读数变化时触发。客户点开客服把消息看完,回调会带着 0 再来一次,你据此把红点收掉。

已经在 configure 时传过监听对象的话,直接调无参的 startUnreadTracking() 即可。不再需要时调 stopUnreadTracking()。

客户退出登录(调 resetUser)时,红点会先清零、查询暂停,等他重新进来产生新的身份后自动恢复,不用你再开一次。你自己调过 stopUnreadTracking() 的除外 —— 那是明确关掉的,不会自动恢复。

哪些情况下不发请求 ​

下面任一条成立时,SDK 不发查询请求:

  • 没有调过 startUnreadTracking
  • 这台设备从来没聊过天:客户一次都没打开过客服,没有可查询的身份
  • APP 不在前台:客户切走或锁屏后立即停止

客服页面开着时查询也会暂停,未读数直接从页面里来。

默认每 60 秒查询一次,可以调整:Android 是 unreadPollIntervalSeconds,iOS 是 unreadPollInterval。

间隔最低 30 秒,配得更小按 30 秒执行。客户回到 APP 的那一刻会立即查一次,间隔影响的是他停在 APP 里不动时红点更新的快慢。

红点之外还要做的事 ​

未读跟踪只在 APP 打开着的时候工作。客户退出 APP 之后,客服再回复,要靠推送提醒,见客户不在 APP 时的消息推送。

下一步 ​