跳到主要内容

撤回消息

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

提示

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

alt(width=250) alt(width=250)

用法

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

提示
  • IMKit 默认只有消息发送者可以撤回这条消息。
  • 只有发送成功的存入数据库的消息可以被撤回。

定制化

处理点击重新编辑按钮事件

撤回消息后,会话页面中会展示 RCRecallNotificationMessage,消息 Cell 中会展示重新编辑按钮。用户点击重新编辑后触发此回调,且不会再触发消息点击回调 didTapMessageCell 方法。

接口原型

Objective C
- (void)didTapReedit:(RCMessageModel *)model;

参数说明

参数类型说明
modelRCMessageModel消息 Cell 的数据模型

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

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

Objective C
RCKitConfigCenter.message.maxRecallDuration = 120;

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

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

Objective C
RCKitConfigCenter.message.reeditDuration = 300;

其他定制化

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

关闭撤回功能

IMKit 默认开启撤回消息功能。您可以通过 IMKit 全局配置关闭撤回功能。

Objective C
RCKitConfigCenter.message.enableMessageRecall = NO;