跳到主要内容

撤回消息

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

撤回消息

RCConversationViewController 直接提供了撤回消息的 API。只有存储并发送成功的消息才可以撤回。

- (void)recallMessage:(long)messageId;
参数类型说明
messageIdlong被撤回消息的消息Id

监听他人撤回消息事件

撤回监听支持通知监听和代理监听两种方式。

通知监听

消息被撤回后,SDK 会分发通知下面通知。

FOUNDATION_EXPORT NSString *const RCKitDispatchRecallMessageNotification;

Notification 的 object 为 消息 Id 的 NSNumber 值。

[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(didRecallMessageNotification:)
name:RCKitDispatchRecallMessageNotification
object:nil];
- (void)didRecallMessageNotification:(NSNotification *)notification {
long long messageId = [notification.object longLongValue];
}

代理监听

设置一个遵循 RCIMReceiveMessageDelegate 协议的代理后,可监听消息撤回事件。该协议即接收消息的协议,可参考 接收消息

@protocol RCIMReceiveMessageDelegate <NSObject>
/*!
消息被撤回的回调方法

@param message 被撤回的消息

@discussion 被撤回的消息会变更为RCRecallNotificationMessage,App需要在UI上刷新这条消息。
@discussion 和上面的 - (void)onRCIMMessageRecalled:(long)messageId 功能完全一致,只能选择其中一个使用。
*/
- (void)messageDidRecall:(RCMessage *)message;
@end