浏览 SDKs · WASM
平台
SDKsWASM

标记会话已读

使用 WASM SDK 将指定会话的消息标记为已读。

复制

当用户进入聊天会话窗口并查看消息后,可调用 markConversationMessageAsRead() 将该会话的未读状态清零。请勿在仅收到后台通知或弹窗预览时过早标记已读。

await openimsdk.markConversationMessageAsRead(conversationID);

接口调用成功后,SDK 会触发 SdkEvent.OnConversationChanged 事件(data 包含更新后的会话对象列表),业务层可根据 conversationID 找到目标会话并将其未读数更新为 0。完整的会话事件监听示例请参考获取会话列表。

在单聊场景中,当前用户将会话标为已读后,对端用户会收到 SdkEvent.OnRecvC2CReadReceipt 单聊已读回执事件。本页集中提供该事件的监听处理示例:事件数据 data 为 MessageReadReceipt[],业务层可根据 userID 匹配单聊会话,并根据 msgIDList 包含的 clientMsgID 将相应消息状态更新为“已读”。

import { SdkEvent } from '@openim/wasm-client-sdk';

const handleC2CReadReceipt = ({ data }) => {
  mergeC2CReadReceipts(data);
};

openimsdk.on(SdkEvent.OnRecvC2CReadReceipt, handleC2CReadReceipt);

function removeC2CReadReceiptListener() {
  openimsdk.off(SdkEvent.OnRecvC2CReadReceipt, handleC2CReadReceipt);
}

在组件销毁、退出登录或切换账号时,请调用 removeC2CReadReceiptListener() 解绑监听。需要说明的是,群聊会话调用此接口仅清理当前登录账号在该会话的本地未读计数;若需上报群成员维度的消息已读状态,请参考上报群消息已读。