跳到主要内容

撤回消息

用户通过 App 成功发送了一条消息之后,可能发现消息内容错误等情况,希望将消息撤回,同时从接收者的消息记录中移除该消息。IMKit 默认实现了消息撤回功能。

提示

IMKit 在撤回消息后,会替换聊天记录中的原始消息为一条 objectName 为 RC:RcNtf 的撤回通知消息(RecallNotificationMessage),可参见服务端文档通知类消息格式

(width=220) (width=220)

用法

IMKit 默认启用撤回功能。用户在会话页面长按消息(已发送成功的消息)可打开弹窗,选择撤回。消息撤回后在一定时间内可以“重新编辑”。

定制化

限制撤回操作权限

默认情况下,融云对撤回消息的操作者不作限制。这意味着任何人都可以撤回他人发送的消息。如需限制,可考虑以下方案:

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

修改消息可撤回的最大时间

IMKit 默认允许在消息发送后 120 秒内撤回。您可以通过全局配置调整该上限。

RongConfigCenter.conversationConfig().rc_message_recall_interval = 120;

如果通过 XML 资源修改 IMKit 默认配置,可在应用 res/values 目录下创建 rc_config.xml 文件,添加以下配置:

<integer name="rc_message_recall_interval">120</integer>

修复撤回后可重新编辑的时间

IMKit 默认允许在消息撤回后 300 秒内可点击重新编辑,仅文本消息支持撤回再编辑。您可以通过全局配置调整该上限。

RongConfigCenter.conversationConfig().rc_message_recall_edit_interval = 300;

如果通过 XML 资源修改 IMKit 默认配置,可在应用 res/values 目录下创建 rc_config.xml 文件,添加以下配置:

<integer name="rc_message_recall_edit_interval">300</integer>

其他定制化

IMKit SDK 默认已经实现了一套消息撤回和展示逻辑,不需要额外调用会话相关 API。如果已有实现无法满足您的需求,可以使用 IMCenter 中相关 API。详见撤回消息

关闭撤回功能

您可以通过 XML 修改 IMKit 默认配置。在应用 res/values 目录下创建 rc_config.xml 文件,添加以下配置项,设置为 false

<bool name="rc_enable_message_recall">false</bool>