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