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




# 配置说明
- 是否开启撤回功能
默认值是 YES
@property (nonatomic, assign) BOOL enableMessageRecall;
已复制
1
- 消息可撤回的最大时间
单位是秒,默认值是 120 秒。
@property (nonatomic, assign) NSUInteger maxRecallDuration;
已复制
1
- 消息撤回后可重新编辑的时间
单位是秒,默认值是 300 秒。
@property (nonatomic, assign) NSUInteger reeditDuration;
已复制
1
目前消息撤回后重新编辑仅为本地操作,卸载重装或者更换设备不会同步。
# 通知回调
- 消息被撤回的通知
消息被撤回后,SDK 会分发此通知,Notification
的 object
为 NSNumber
的 messageId
。
通知原型:
FOUNDATION_EXPORT NSString *const RCKitDispatchRecallMessageNotification;
已复制
1
- 消息被撤回的回调
被撤回的消息会变更为 RCRecallNotificationMessage
,App 需要在 UI 上刷新这条消息。
需要您遵守 RCIMReceiveMessageDelegate
协议
参数说明:
参数 | 类型 | 说明 |
---|---|---|
messageId | long | 被撤回的消息ID |
协议方法:
- (void)onRCIMMessageRecalled:(long)messageId;
已复制
1
- 点击撤回消息Cell中重新编辑的回调
点击撤回消息 Cell 中重新编辑,会调用此回调,且不会再触发 didTapMessageCell
。
参数说明:
参数 | 类型 | 说明 |
---|---|---|
model | RCMessageModel (opens new window) | 消息Cell的数据模型 |
回调原型:
- (void)didTapReedit:(RCMessageModel *)model;
已复制
1
# 自定义撤回
开发者也可通过下面接口根据业务需求进行撤回消息
参数说明:
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
messageId | long | 是 | 被撤回消息的消息Id |
方法原型:
- (void)recallMessage:(long)messageId;
已复制
1
此方法为 RCConversationViewController
类的实例方法。
只有存储并发送成功的消息才可以撤回。