跳到主要内容

删除消息

单聊会话、群聊会话的参与者可删除会话中的消息。您可以删除指定的一条或一组消息,删除某个会话的全部消息历史,或删除会话中早于指定时间点的消息。

消息送达后会直接存入本地数据库,您可以调用接口从本地数据库中删除消息。消息仅从本地数据库中删除,保存在服务端的消息将不受影响。如果您已经开通历史消息云存储服务,仍然可以从服务端拉取到历史消息。

提示
  • App 用户的单聊会话、群聊会话、系统会话的消息默认仅存储在本地数据库中,仅支持从本地删除。如果 App(App Key/环境)已开通单群聊消息云端存储,该用户的消息还会保存在融云服务端(默认 6 个月),可从远端历史消息记录中删除消息。
  • 针对单聊会话、群聊会话,如果通过任何接口以传入时间戳的方式删除远端消息,服务端默认不会删除对应的离线消息补偿(该机制仅会在打开多设备消息同步开关后生效)。此时如果换设备登录或卸载重装,仍会因为消息补偿机制获取到已被删除的历史消息。如需彻底删除消息补偿,请提交工单,申请开通删除服务端历史消息时同时删除多端补偿的离线消息。如果以传入消息对象的方式删除远端消息,则服务端一定会删除消息补偿中的对应消息。
  • 针对单聊会话、群聊会话,如果 App 的管理员或者某普通用户希望在所有会话参与者的历史记录中彻底删除一条消息,应使用撤回消息功能。消息成功撤回后,原始消息内容会在所有用户的本地与服务端历史消息记录中删除。
  • 客户端 SDK 不提供删除聊天室消息的接口。当前用户的聊天室本地消息在退出聊天室时会被自动删除。开通聊天室消息云端存储服务后,如需清除全部用户的聊天室历史消息,可使用服务端 API 清除消息

删除指定消息集合

您可以从本地数据库中删除指定的一条或一组消息。这种方式仅需要提供待删除消息 ID 数组,不区分会话类型。

方法

int deleteLocalMessages(
List<RCIMMessage> messages
)

参数说明

参数名类型描述
messagesList<RCIMMessage>消息集合

返回值

返回值描述
int当次接口操作状态码,并不代表最终操作结果,状态码详细信息

代码示例

int code = engine.deleteLocalMessages(
messages
);

回调方法

  • onLocalMessagesDeleted
delegate void OnLocalMessagesDeletedDelegate(int code,
List<RCIMMessage> messages);

OnLocalMessagesDeletedDelegate onLocalMessagesDeleted;

参数说明

参数名参数类型描述
codeint接口回调的状态码,0 代表成功,非 0 代表出现异常
messagesList<RCIMMessage>调用接口时传入的消息集合

代码示例

engine.onLocalMessagesDeleted = delegate(
int code,
List<RCIMMessage> messages
)
{

};

删除某个会话的指定消息集合

此方法会将本地和远端的消息一起进行删除

提示

只有已开通单群聊消息云存储服务的应用才可以操作。您可以前往控制台开通服务

方法

int deleteMessages(
RCIMConversationType type,
string targetId,
string channelId,
List<RCIMMessage> messages
)

参数说明

参数名类型描述
typeRCIMConversationType会话类型
targetIdstring会话 ID
channelIdstring所属会话的业务标识,长度限制 20 字符
messagesList<RCIMMessage>消息集合

返回值

返回值描述
int当次接口操作状态码,并不代表最终操作结果,状态码详细信息

代码示例

int code = engine.deleteMessages(
type,
targetId,
channelId,
messages
);

回调方法

  • onMessagesDeleted

    接口调用结果的监听

delegate void OnMessagesDeletedDelegate(int code,
RCIMConversationType type,
string targetId,
string channelId,
List<RCIMMessage> messages);

OnMessagesDeletedDelegate onMessagesDeleted;

参数说明

参数名参数类型描述
codeint接口回调的状态码,0 代表成功,非 0 代表出现异常
typeRCIMConversationType调用接口时传入的会话类型
targetIdstring调用接口时传入的会话 ID
channelIdstring调用接口时传入的频道 ID
messagesList<RCIMMessage>调用接口时传入的消息集合

代码示例

engine.onMessagesDeleted = delegate(
int code,
RCIMConversationType type,
string targetId,
string channelId,
List<RCIMMessage> messages
)
{

};

通过时间戳清除某个会话的消息

提示

当删除远端消息时,只有已开通单群聊消息云存储服务的应用才可以操作。您可以前往控制台开通服务

方法

int clearMessages(
RCIMConversationType type,
string targetId,
string channelId,
int timestamp,
RCIMMessageOperationPolicy policy
)

参数说明

参数名类型描述
typeRCIMConversationType会话类型
targetIdstring会话 ID
channelIdstring所属会话的业务标识,长度限制 20 字符
timestampint清除消息截止时间戳,recordTime 大于等于 0,小于等于当前会话最后一条消息的 sentTime,
0 清除所有消息,
其他值清除小于等于 recordTime 的消息
policyRCIMMessageOperationPolicy清除的策略
LOCAL:只清除本地,
REMOTE:只清除远端,
LOCAL_REMOTE:本地远端都清除

返回值

返回值描述
int当次接口操作状态码,并不代表最终操作结果,状态码详细信息

代码示例

int code = engine.clearMessages(
type,
targetId,
channelId,
timestamp,
policy
);

回调方法

  • onMessageCleared

    接口调用结果的监听

delegate void OnMessageClearedDelegate(int code,
RCIMConversationType type,
string targetId,
string channelId,
long timestamp);

OnMessageClearedDelegate onMessageCleared;

参数说明

参数名参数类型描述
codeint接口回调的状态码,0 代表成功,非 0 代表出现异常
typeRCIMConversationType调用接口时传入的会话类型
targetIdstring调用接口时传入的会话 ID
channelIdstring调用接口时传入的频道 ID
timestampint调用接口时传入的时间戳

代码示例

engine.onMessageCleared = delegate(
int code,
RCIMConversationType type,
string targetId,
string channelId,
int timestamp
)
{

};