SDKsuni-app
标记会话已读
清理会话未读数,并处理单聊已读回执事件。
markConversationMessageAsRead() 把指定会话标为已读。本页同时归属单聊已读回执 onRecvC2CReadReceipt。
用户打开会话并阅读完当前可见消息后再调用。不要在只预览通知、后台收到消息或尚未展示聊天页时提前标记已读。
import {
markConversationMessageAsRead,
off,
onRecvC2CReadReceipt,
} from '@/uni_modules/unix-openim-sdk'
const receiptSubscription = onRecvC2CReadReceipt((result) => {
result.receipts.forEach((receipt) => mergeReadReceipt(receipt))
})
await markConversationMessageAsRead(conversationID)
off(receiptSubscription)商业版还提供 resetConversationUnread()商业版 商业版,可把多个会话的未读数重置为指定值:
import { resetConversationUnread } from '@/uni_modules/unix-openim-sdk'
await resetConversationUnread({ conversationIDs: [conversationID], num: 0 })本地会话未读清零与对端收到已读回执不是同一步。Promise、会话变化和回执事件分别处理。
Promise 成功后,通过 onConversationChanged 取得最新会话并按 conversationID 合并未读数;需要立即校准时重新查询该会话。单聊回执中的 receipts 应先定位对端用户对应的单聊,再按每项消息 ID 列表更新已读状态。
群聊中调用本 API 只清理当前账号的会话未读数。需要上报群成员级已读状态时,另见上报群消息已读。组件卸载、退出登录或切换账号时释放 receiptSubscription。
这个页面有帮助吗?