更新时间: 2021-04-16

# 功能描述

用户在消息发送成功后的有效时间内长按消息,在弹出菜单中选择“撤回消息”来将这条消息撤回。这条消息将在发送端删除,并提示“你撤回了一条消息”,同时发送撤回指令给接收端,接收端收到撤回指令后,也会把同一条消息删除,提示“XX撤回了一条消息”。

# 效果展示

# 配置说明

  1. 是否开启撤回功能

默认值是 YES

@property (nonatomic, assign) BOOL enableMessageRecall;
已复制
1
  1. 消息可撤回的最大时间

单位是,默认值是 120 秒。

@property (nonatomic, assign) NSUInteger maxRecallDuration;
已复制
1
  1. 消息撤回后可重新编辑的时间

单位是,默认值是 300 秒。

@property (nonatomic, assign) NSUInteger reeditDuration;
已复制
1

目前消息撤回后重新编辑仅为本地操作,卸载重装或者更换设备不会同步。

# 通知回调

  1. 消息被撤回的通知

消息被撤回后,SDK 会分发此通知,NotificationobjectNSNumbermessageId

通知原型:

FOUNDATION_EXPORT NSString *const RCKitDispatchRecallMessageNotification;
已复制
1
  1. 消息被撤回的回调

被撤回的消息会变更为 RCRecallNotificationMessage ,App 需要在 UI 上刷新这条消息。

需要您遵守 RCIMReceiveMessageDelegate 协议

参数说明:

参数 类型 说明
messageId long 被撤回的消息ID

协议方法:

- (void)onRCIMMessageRecalled:(long)messageId;
已复制
1
  1. 点击撤回消息Cell中重新编辑的回调

点击撤回消息 Cell 中重新编辑,会调用此回调,且不会再触发 didTapMessageCell

参数说明:

参数 类型 说明
model RCMessageModel (opens new window) 消息Cell的数据模型

回调原型:

- (void)didTapReedit:(RCMessageModel *)model;
已复制
1

# 自定义撤回

开发者也可通过下面接口根据业务需求进行撤回消息

参数说明:

参数 类型 必填 说明
messageId long 被撤回消息的消息Id

方法原型:

- (void)recallMessage:(long)messageId;
已复制
1

此方法为 RCConversationViewController 类的实例方法。

只有存储并发送成功的消息才可以撤回。

文档是否解决您的问题 ?

如果遇到产品相关问题,您可 提交工单 寻求帮助