Appearance
未读消息与红点
客户问完就切回商品页了,客服十分钟后回复。让他知道有新消息,靠的是 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 时的消息推送。
下一步
- 客户不在 APP 时的消息推送
- 监听会话事件 —— 收到消息时震动、弹应用内提示