撤回消息
超级群业务中,消息发送方可撤回已发送成功的消息。撤回成功后,服务端即删除原始消息。
默认情况下,融云对撤回消息的操作者不作限制。如需限制,可考虑以下方案:
- App 客户端自行限制撤回消息的操作者。例如,不允许 App 业务中的普通用户撤回他人发送的消息,允许 App 业务中的管理员角色撤回他人发送的消息。
- 如需避免用户撤回非本人发送的消息,可以提交工单申请打开IMLib SDK 只允许撤回自己发送的消息。从融云服务端进行限制,禁止用户撤回非本人发送的消息。
监听消息处理
您可以通过设置 setRCUltraGroupMessageChangeDelegate
代理来监听远端用户对消息的撤回操作:
- 设置
setRCUltraGroupMessageChangeDelegate:
代理:
Objective C
[[RCChannelClient sharedChannelManager] setRCUltraGroupMessageChangeDelegate:self];
- 实现
onUltraGroupMessageRecalled:
消息撤回代理方法:
Objective C
/*!
消息撤回
@param messages 消息集合
*/
- (void)onUltraGroupMessageRecalled:(NSArray<RCMessage*>*)messages {
}
撤回指定消息
提示
只有已发送成功的消息可被撤回。
接口原型
Objective C
//撤回消息
- (void)recallUltraGroupMessage:(RCMessage *)message
success:(void (^)(long messageId))successBlock
error:(void (^)(RCErrorCode status))errorBlock
参数说明
参数 | 类型 | 说明 |
---|---|---|
message | RCMessage | 需要撤回的消息 |
successBlock | Block | 撤回成功的回调 |
errorBlock | Block | 撤回失败的回调 |
-
success
说明:回 调参数 回调类型 说明 messageId long 撤回的消息ID,该消息已经变更为新的消息 -
error
说明:回调参数 回调类型 说明 errorCode RCErrorCode 失败错误码
示例代码
Objective C
[[RCChannelClient sharedChannelManager] recallUltraGroupMessage:message success:^(long messageId) {
} error:^(RCErrorCode status) {
}];
撤回指定消息并删除原始数据
提示
- 只有已发送成功的消息可被撤回。
- 此方法会同时删除客户端发送方、接收方的原始消息数据。
接口原型
Objective C
//撤回消息
- (void)recallUltraGroupMessage:(RCMessage *)message
isDelete:(BOOL)isDelete
success:(void (^)(long messageId))successBlock
error:(void (^)(RCErrorCode errorcode))errorBlock
参数说明
参数 | 类型 | 说明 |
---|---|---|
message | RCMessage | 需要撤回的消息 |
isDelete | isDelete | 指定移动端发送方与接收方是否需要从本地删除 原始消息记录。为 false 时,移动端不会删除原始消息记录,会将消息内容替换为撤回提示(小灰条通知)。为 true 时,移动端会删除原始消息记录,不显示撤回提示(小灰条通知)。 |
successBlock | Block | 撤回成功的回调 |
errorBlock | Block | 撤回失败的回调 |
-
success
说明:回调参数 回调类型 说明 messageId long 撤回的消息ID,该消息已经变更为新的消息 -
error
说明:回调参数 回调类型 说明 errorCode RCErrorCode 失败错误码
示例代码
Objective C
[[RCChannelClient sharedChannelManager] recallUltraGroupMessage:message
isDelete:YES
success:^(long messageId) {
} error:^(RCErrorCode status) {
}];