删除消息
单聊会话、群聊会话的参与者可删除会话中的消息。您可以删除指定的一条或一组消息,删除某个会话的全部消息历史,或删除会话中早于指定时间点的消息。
消息送达后会直接存入本地数据库,您可以调用接口从本地数据库中删除消息。消息仅从本地数据库中删除,保存在服务端的消息将不受影响。如果您已经开通历史消息云存储服务,仍然可以从服务端拉取到历史消息。
提示
- App 用户的单聊会话、群聊会话、系统会话的消息默认仅存储在本地数据库中,仅支持从本地删除。如果 App(App Key/环境)已开通单群聊消息云端存储,该用户的消息还会保存在融云服务端(默认 6 个月),可从远端历史消息记录中删除消息。
- 针对单聊会话、群聊会话,如果通过任何接口以传入时间戳的方式删除远端消息,服务端默认不会删除对应的离线消息补偿(该机制仅会在打开多设备消息同步开关后生效)。此时如果换设备登录或卸载重装,仍会因为消息补偿机制获取到已被删除的历史消息。如需彻底删除消息补偿,请提交工单,申请开通删除服务端历史消息时同时删除多端补偿的离线消息。如果以传入消息对象的方式删除远端消息,则服务端一定会删除消息补偿中的对应消息。
- 针对单聊会话、群聊会话,如果 App 的管理员或者某普通用户希望在所有会话参与者的历史记录中彻底删除一条消息,应使用撤回消息功能。消息成功撤回后,原始消息内容 会在所有用户的本地与服务端历史消息记录中删除。
- 客户端 SDK 不提供删除聊天室消息的接口。当前用户的聊天室本地消息在退出聊天室时会被自动删除。开通聊天室消息云端存储服务后,如需清除全部用户的聊天室历史消息,可使用服务端 API 清除消息。
删除指定消息集合
您可以从本地数据库中删除指定的一条或一组消息。这种方式仅需要提供待删除消息 ID 数组,不区分会话类型。
方法
int deleteLocalMessages(
List<RCIMMessage> messages
)
参数说明
参数名 | 类型 | 描述 |
---|---|---|
messages | List<RCIMMessage> | 消息集合 |
返回值
返回值 | 描述 |
---|---|
int | 当次接口操作状态码,并不代表最终操作结果,状态码详细信息 |
代码示例
int code = engine.deleteLocalMessages(
messages
);
回调方法
- onLocalMessagesDeleted
delegate void OnLocalMessagesDeletedDelegate(int code,
List<RCIMMessage> messages);
OnLocalMessagesDeletedDelegate onLocalMessagesDeleted;
参数说明
参数名 | 参数类型 | 描述 |
---|---|---|
code | int | 接口回调的状态码,0 代表成功,非 0 代表出现异常 |
messages | List<RCIMMessage> | 调用接口时传入的消息集合 |
代码示例
engine.onLocalMessagesDeleted = delegate(
int code,
List<RCIMMessage> messages
)
{
};