浏览 SDKs · WASM
平台
SDKsWASM商业版

批量删除消息

使用 WASM SDK 批量删除当前账号在同一会话中的消息。

复制

参数说明

参数类型是否必填说明
conversationIDstring是要删除消息所在的会话 ID。
clientMsgIDsstring[]是要删除的消息 ID 列表;同一批 ID 必须属于同一会话。
isSyncboolean是是否把删除动作同步到当前账号的其他客户端。
await openimsdk.deleteMessages({
  conversationID,
  clientMsgIDs: selectedMessageIDs,
  isSync: true,
});

isSync: false 仅删除当前设备本地与当前账号的服务端记录;true 则会请求服务端向当前账号的多端设备同步该删除动作。该操作仅影响当前账号的消息视图,不会删除其他会话成员的消息副本,也不会产生撤回系统提示。

接口调用成功表示删除请求已完成。若启用了多端同步,其他客户端随后会收到删除事件。

本页集中提供 SdkEvent.OnMsgDeleted 事件的监听示例:事件载荷 data 为 MessageItem,业务层可根据会话路由定位会话,并使用 clientMsgID 将对应消息从界面列表中移除。

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

const handleMessageDeleted = ({ data }) => {
  removeMessage(resolveConversationID(data), data.clientMsgID);
};

openimsdk.on(SdkEvent.OnMsgDeleted, handleMessageDeleted);

function removeMessageDeletedListener() {
  openimsdk.off(SdkEvent.OnMsgDeleted, handleMessageDeleted);
}

在组件销毁、退出登录或切换账号时,请调用 removeMessageDeletedListener() 解绑监听。如需校准消息列表,可重新拉取历史记录。