跳到主要内容

撤回消息

支持撤回已成功发送的消息。

默认情况下,融云对撤回消息的操作者不作限制。如需限制,可考虑以下方案:

  • App 客户端自行限制撤回消息的操作者。例如,不允许 App 业务中的普通用户撤回他人发送的消息,允许 App 业务中的管理员角色撤回他人发送的消息。
  • 如需避免用户撤回非本人发送的消息,可以提交工单申请打开IMLib SDK 只允许撤回自己发送的消息。从融云服务端进行限制,禁止用户撤回非本人发送的消息。

撤回消息

调用 recallMessage 方法,可撤回指定的消息。

提示

Electron 平台下,当收到远端的撤回通知或主动发起撤回消息时,如果撤回参数 isDeletefalse,SDK 会在本地数据库生成一条 RC:RcNtf 消息,替换原始消息内容。

接口

JavaScript
RongIMLib.recallMessage(conversation, options)

参数说明

参数类型必填说明
conversationIConversationOption目标会话
optionsIRecallMessageOptions待撤回消息的相关参数,详见下方 options 参数说明。
  • options 参数说明

    参数类型必填说明
    messageUIdstring消息的唯一 ID
    sentTimenumber消息发送的时间戳
    userIUserProfile撤回消息时附带的操作者用户信息
    disableNotificationboolean是否发送静默消息
    pushConfigIPushConfig移动端推送配置,功能与 Android 和 iOS 端的 MessagePushConfig 相似
    extrastring(自 5.3.0 起支持) 撤回消息时携带的扩展信息
    isDeleteboolean(自 5.3.1 起支持) 指定本端和接收方是否删除本地原始消息记录。
    false:不删除原消息记录,替换为撤回提示(小灰条通知);
    true:删除原消息记录,不展示提示
    isAdminboolean(自 5.16.0 起支持) 撤回时透传该字段,供 IMKit 渲染撤回提示消息时显示操作者身份,其他功能无影响

示例代码

JavaScript
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)
})

监听消息撤回通知

注意
  • 单群聊业务:通过监听 Events.MESSAGES 事件,接收 RC:RcCmdRC: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)
})