Skip to content

未读消息与红点 ​

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

这是什么 ​

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

合从不碰你的界面,只负责给数字。

开启 ​

未读跟踪默认关闭,调一次 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() 的除外 —— 那是明确关掉的,不会自动恢复。

为什么默认关闭 ​

开着就意味着 APP 会定期向合从查询未读数。这是一次网络请求,会出现在应用市场的隐私检测报告里,也会被用户在流量统计里看到。

不是每个 APP 都需要红点。默认关闭意味着:你没有显式开启时,SDK 在客服页面之外不发出任何请求。这样你在做隐私合规说明时,「客服 SDK 在后台做了什么」这个问题的答案是「什么都没做」。

三种情况下不会有任何请求 ​

即使你开了未读跟踪,下面任一条成立时,SDK 也完全不活动:

  • 没有调过 startUnreadTracking
  • 这台设备从来没聊过天 —— 客户一次都没打开过客服,本地没有可查询的身份,这时不发请求
  • APP 不在前台 —— 客户切走或锁屏后立即停止,不产生后台网络活动

另外,客服页面开着的时候轮询会自动暂停。那时页面本身是实时连接的,未读数从连接里直接来,不需要额外查询。

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

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

红点之外还要做的事 ​

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

两件事互相补充:APP 开着靠红点,APP 关了靠推送。

下一步 ​