删除远端消息
SDK 支持从客户端直接删除单聊会话、群聊会话存储在融云服务端的历史消息。您可以删除指定的一条 或一组消息,或删除会话中早于指定时间点的消息。
提示
- 仅适用于 App Key 已开通单群聊消息云端存储 的 App。开通消息云存储服务后,用户的消息会保存在融云服务端(默认 6 个月)。
- 针对单聊会话、群聊会话,如果通过任何接口以传入时间戳的方式删除远端消息,服务端默认不会删除对应的离线消息补偿(该机制仅会在打开多设备消息同步开关后生效)。此时如果换设备登录或卸载重装,仍会因为消息补偿机制获取到已被删除的历史消息。如需彻底删除消息补偿,请提交工单,申请开通删除服务端历史消息时同时删除多端补偿的离线消息。如果以传入消息对象的方式删除远端消息,则服务端一定会删除消息补偿中的对应消息。
- 针对单聊会话、群聊会话 ,如果 App 的管理员或者某普通用户希望在所有会话参与者的历史记录中彻底删除一条消息,应使用撤回消息功能。消息成功撤回后,原始消息内容会在所有用户的本地与服务端历史消息记录中删除。
- 客户端 SDK 不提供删除聊天室消息的接口。当前用户的聊天室本地消息在退出聊天室时会被自动删除。开通聊天室消息云端存储服务后,如需清除全部用户的聊天室历史消息,可使用服务端 API 清除消息。
通过消息删除
调用 deleteMessages 可根据消息的 ID、时间戳和方向(发送或接收)从服务端删除指定单个会话中的一条或一组消息。
const conversation = {
conversationType: RongIMLib.ConversationType.PRIVATE,
targetId: "<目标用户ID>"
}
RongIMLib.deleteMessages(conversation, [
{
messageUId: "BS4O-P5AO-D1O6-9GPP",
sentTime: 1632728405345,
messageDirection: RongIMLib.MessageDirection.SEND
},
{
messageUId: "BS4O-QEBR-VJM6-9GPP",
sentTime: 1632728573423,
messageDirection: RongIMLib.MessageDirection.SEND
}
]).then(res => {
if (res.code === 0) {
console.log('删除成功')
} else {
console.log(res.code, res.msg)
}
}).catch(error => {
console.log(error)
})
参数 | 类型 | 说明 |
---|---|---|
conversation | IConversationOption | 会话。不支持聊天室。 |
messages | 消息数组 | 要删除的消息数组。详见 messages 结构说明。 |
-
messages
结构说明参数 类型 说明 messageUId string 消息 UId sentTime number 消息发送时间 messageDirection MessageDirection 消息方向
通过时间戳删除
调用 clearHistoryMessages 可根据时间戳从服务端删除指定会话中早于该时间戳的消息。
const conversation = {
conversationType: RongIMLib.ConversationType.PRIVATE,
targetId: "<目标用户ID>"
}
RongIMLib.clearHistoryMessages(conversation, <时间戳>).then(res => {
if (res.code === 0) {
console.log('清除成功')
} else {
console.log(res.code, res.msg)
}
}).catch(error => {
console.log(error)
})
参数 | 类型 | 说明 |
---|---|---|
conversation | IConversationOption | 会话。不支持聊天室。 |
timestamp | number | 时间点,该时间点前的消息将被删除 |