浏览 SDKs · HarmonyOS
平台
SDKsHarmonyOS商业版

标记会话已读

将指定会话中当前已接收的消息标记为已读。

复制

用户确实阅读当前消息后再调用,不要在后台通知预览时提前清零。

import sdk, {
  EventOnRecvC2CReadReceiptData,
  MarkConversationMessageAsReadReq,
  OpenIMSDKEvent,
} from '@openimsdk/imsdk';

const request: MarkConversationMessageAsReadReq = {
  conversationID: conversationID,
};
await sdk.markConversationMessageAsRead(request);

const handleC2CReceipt = (data: EventOnRecvC2CReadReceiptData): void => {
  for (let index = 0; index < data.msgReceiptList.length; index += 1) {
    mergeC2CReadReceipt(data.msgReceiptList[index]);
  }
};
const unsubscribeReceipt = sdk.on(OpenIMSDKEvent.EventOnRecvC2CReadReceipt, handleC2CReceipt);

export function removeC2CReadReceiptListener(): void {
  unsubscribeReceipt();
}

Promise 成功表示已读请求已完成。会话未读数通过会话变更事件更新,客户端根据 conversationID 更新对应会话未读状态,完整监听配置请参考获取会话列表;单聊对端通过 EventOnRecvC2CReadReceipt 事件接收已读回执并按消息 ID 维护已读状态。群聊消息已读属于独立能力,请参考上报群消息已读。退出账号或销毁消息状态层时调用 removeC2CReadReceiptListener() 移除监听。