撤回消息
撤回已发送成功的消息。
默认情况下,融云对撤回消息的操作者不作限制。如需限制,可考虑以下方案:
- App 客户端自行限制撤回消息的操作者。例如,不允许 App 业务中的普通用户撤回他人发送的消息,允许 App 业务中的管理员角色撤回他人发送的消息。
- 如需避免用户撤回非本人发送的消息,可以提交工单申请打开IMLib SDK 只允许撤回自己发送的消息。从融云服务端进行限制,禁止用户撤回非本人发送的消息。
调用 recallMessage 撤回指定消息。
提示
Electron 平台下,接收到撤回消息、或主动发出撤回消息时,若撤回设置 isDelete
为 false 时,会在本地数据库生成一条 RC:RcNtf
消息以替换被撤回的原始消息。
js
const conversation = {
conversationType: RongIMLib.ConversationType.PRIVATE,
targetId: '<目标用户ID>',
}
RongIMLib.recallMessage(conversation, {
messageUId: 'BS4O-QEBR-VJM6-9GPP',
sentTime: 1632728573423,
})
.then((res) => {
if (res.code === 0) {
console.log(res.code, res.data)
} else {
console.log(res.code, res.msg)
}
})
.catch((error) => {
console.log(error)
})
参数 | 类型 | 说明 |
---|---|---|
conversation | IConversation | 会话。不支持系统会话。 |
options | 消息相关 | 要撤回消息的相关信息。详见下方 options 参数说明。 |
-
options
参数说明参数 类型 是否必填 说明 messageUId string 是 消息的 UId sentTime number 是 消息的发送时间 user IUserProfile 否 撤回消息携带用户信息 disableNotification boolean 否 是否发送静默消息 pushConfig IPushConfig 否 移动端推送配置(与 Android、iOS 端的 MessagePushConfig 作用相似) extra string 否 (Version ≥ 5.3.0) 撤回消息携带扩展信息。 isDelete boolean 否 (Version ≥ 5.3.1) 指定本端和接收方是否删除本地数据库内的原始消息。 false
: 不会删除原始消息记录,会将消息内容替换为撤回提示(小灰条通知)。为true
时,会删除原始消息记录,不显示撤回提示(小灰条通知)。isAdmin boolean 否 (Version ≥ 5.16.0) 撤回时增加 isAdmin 字段,该字段仅作为透传数据以供 IMKit 渲染小灰条消息时显示操作者身份,无其他实际作用。
监听消息撤回通知
注意
- 单群聊业务中,通过监听
Events.MESSAGES
事件接收RC:RcCmd
及RC:RcNtf
消息以获取远端撤回通知. - 超级群业务通过监听
Events.ULTRA_GROUP_MESSAGE_RECALLED
事件获取远端撤回通知。
javascript
// 监听单群聊撤回通知
RongIMLib.addEventListener(RongIMLib.Events.MESSAGES, (messageList) => {
console.log(messageList)
})
// 监听超级群撤回通知
RongIMLib.addEventListener(RongIMLib.Events.ULTRA_GROUP_MESSAGE_RECALLED, (messageList) => {
console.log(messageList)
})