删除消息
单聊会话、群聊会话的参与者可删除会话中的消息。您可以删除指定的一条或一组消息,删除某个会话的全部消息历史,或删除会话中早于指定时间点的消息。
消息送达后会直接存入本地数据库,您可以调用接口从本地数据库中删除消息。消息仅从本地数据库中删除,保存在服务端的消息将不受影响。如果您已经开通历史消息云存储服务,仍然可以从服务端拉取到历史消息。
提示
- App 用户的单聊会话、群聊会话、系统会话的消息默认仅存储在本地数据库中,仅支持从本地删除。如果 App(App Key/环境)已开通单群聊消息云端存储,该用户的消息还会保存在融云服务端(默认 6 个月),可从远端历史消息记录中删除消息。
- 针对单聊会话、群聊会话,如果通过任何接口以传入时间戳的方式删除远端消息,服务端默认不会删除对应的离线消息补偿(该机制仅会在打开多设备消息同步开关后生效)。此时如果换设备登录或卸载重装,仍会因为消息补偿机制获取到已被删除的历史消息。如需彻底删除消息补偿,请提交工单,申请开通删除服务端历史消息时同时删除多端补偿的离线消息。如果以传入消息对象的方式删除远端消息,则服务端一定会删除消息补偿中的对应消息。
- 针对单聊会话、群聊会话,如果 App 的管理员或者某普通用户希望在所有会话参与者的历史记录中彻底删除一条消息,应使用撤回消息功能。消息成功撤回后,原始消息内容会在所有用户的本地与服务端历史消息记录中删除。
- 客户端 SDK 不提供删除聊天室消息的接口。当前用户的聊天室本地消息在退出聊天室时会被自动删除。开通聊天室消息云端存储服务后,如需清除全部用户的聊天室历史消息,可使用服务端 API 清除消息。
删除指定消息集合
您可以从本地数据库中删除指定的一条或一组消息。这种方式仅需要提供待删除消息 ID 数组,不区分会话类型。
方法
deleteLocalMessages(messages: Array<RCIMIWMessage>): Promise<number>;
参数说明
参数名 | 类型 | 描述 |
---|---|---|
messages | Array<RCIMIWMessage> | 消息集合 |
返回值
返回值 | 描述 |
---|---|
Promise<number> | 当次接口操作状态码,并不代表最终操作结果,状态 码详细信息 |
代码示例
engine.deleteLocalMessages(messages)
.then((code: number) => {});
回调方法
- setOnLocalMessagesDeletedListener
setOnLocalMessagesDeletedListener(listener?: (code: number, messages: Array<RCIMIWMessage>) => void): void;
参数说明
参数名 | 参数类型 | 描述 |
---|---|---|
code | number | 接口回调的状态码,0 代表成功,非 0 代表出现异常 |
messages | Array<RCIMIWMessage> | 调用接口时传入的消息集合 |
代码示例
engine.setOnLocalMessagesDeletedListener((code: number, messages: Array<RCIMIWMessage>) => {});
删除某个会话的指定消息集合
此方法会将本地和远端的消息一起进行删除
提示
只有已开通单群聊消息云存储服务的应用才可以操作。您可以前往控制台开通服务。
方法
deleteMessages(type: RCIMIWConversationType, targetId: string, channelId: string, messages: Array<RCIMIWMessage>): Promise<number>;
参数说明
参数名 | 类型 | 描述 |
---|---|---|
type | RCIMIWConversationType | 会话类型 |
targetId | string | 会话 ID |
channelId | string | 非超级群场景暂不支持该字段。传 null 即可。 |
messages | Array<RCIMIWMessage> | 消息集合 |
返回值
返回值 | 描述 |
---|---|
Promise<number> | 当次接口操作状态码,并不代表最终操作结果,状态码详细信息 |
代码示例
engine.deleteMessages(conversationType, targetId, channelId, messages)
.then((code: number) => {});
回调方法
-
setOnMessagesDeletedListener
接口调用结果的监听
setOnMessagesDeletedListener(listener?: (code: number, type: RCIMIWConversationType, targetId: string, channelId: string, messages: Array<RCIMIWMessage>) => void): void;
参数说明
参数名 | 参数类型 | 描述 |
---|---|---|
code | number | 接口回调的状态码,0 代表成功,非 0 代表出现异常 |
type | RCIMIWConversationType | 调用接口时传入的会话类型 |
targetId | string | 调用接口时传入的会话 ID |
channelId | string | 调用接口时传入的频道 ID |
messages | Array<RCIMIWMessage> | 调用接口时传入的消息集合 |
代码示例
engine.setOnMessagesDeletedListener((code: number, type: RCIMIWConversationType, targetId: string, channelId: string, messages: Array<RCIMIWMessage>) => {});
通过时间戳清除某个会话的消息
提示
当删除远端消息时,只有已开通单群聊消息云存储服务的应用才可以操作。您可以前往控制台开通服务。
方法
clearMessages(type: RCIMIWConversationType, targetId: string, channelId: string, timestamp: number, policy: RCIMIWMessageOperationPolicy): Promise<number>;
参数说明
参数名 | 类型 | 描述 |
---|---|---|
type | RCIMIWConversationType | 会话类型 |
targetId | string | 会话 ID |
channelId | string | 非超级群场景暂不支持该字段。传 null 即可。 |
timestamp | number | 清除消息截止时间戳,recordTime 大于等于 0,小于等于当前会话最后一条消息的 sentTime, 0 清除所有消息, 其他值清除小于等于 recordTime 的消息 |
policy | RCIMIWMessageOperationPolicy | 清除的策略 |
返回值
返回值 | 描述 |
---|---|
Promise<number> | 当次接口操作状态码,并不代表最终操作结果,状态码详细信息 |
代码示例
engine.clearMessages(conversationType, targetId, channelId, timestamp, policy)
.then((code: number) => {});
回调方法
-
setOnMessageClearedListener
接口调用结果的监听
setOnMessageClearedListener(listener?: (code: number, type: RCIMIWConversationType, targetId: string, channelId: string, timestamp: number) => void): void;
参数说明
参数名 | 参数类型 | 描述 |
---|---|---|
code | number | 接口回调的状态码,0 代表成功,非 0 代表出现异常 |
type | RCIMIWConversationType | 调用接口时传入的会话类型 |
targetId | string | 调用接口时传入的会话 ID |
channelId | string | 调用接口时传入的频道 ID |
timestamp | number | 调用接口时传入的时间戳 |
代码示例
engine.setOnMessageClearedListener((code: number, type: RCIMIWConversationType, targetId: string, channelId: string, timestamp: number) => {});