SDKsuni-app / uni-app x
标记会话已读
将指定会话中当前已接收的消息标记为已读。
用户进入聊天页面并阅读当前可见消息后,将该会话中已接收的消息标记为已读。避免在仅预览系统通知或应用处于后台时提前触发标记已读。
import { markConversationMessageAsRead } from '@/uni_modules/unix-openim-sdk'
await markConversationMessageAsRead(conversationID)Promise 成功表示已读请求已完成。客户端可先将本地会话未读数清零,随后通过会话变更事件按 conversationID 确认最新未读状态;完整会话事件监听见获取会话列表。
接收单聊消息已读回执
当前用户标记单聊会话已读后,对方设备将触发单聊已读回执事件。本操作集中监听该事件,回调参数接收 OpenIMMessageReceiptListResult | null,回执数组位于 receipts。
import {
OpenIMMessageReceiptListResult,
off,
onRecvC2CReadReceipt,
} from '@/uni_modules/unix-openim-sdk'
const handleC2CReadReceipts = (
result: OpenIMMessageReceiptListResult | null,
) => {
if (result == null) return
result.receipts.forEach((receipt) => {
mergeC2CReadReceipt(
receipt.userID,
receipt.msgIDList,
receipt.readTime,
)
})
}
const c2cReadReceiptSubscription = onRecvC2CReadReceipt(
handleC2CReadReceipts,
)
function removeC2CReadReceiptListener() {
off(c2cReadReceiptSubscription)
}userID 标识单聊对端,msgIDList 是已读消息的 clientMsgID 列表,readTime 是 Unix 毫秒时间戳。退出登录、切换账号或销毁消息状态层时应调用清理函数取消事件监听。
这个页面有帮助吗?