撤回消息
IMKit SDK 默认已经实现了一套消息撤回和展示逻辑,不需要额外调用会话相关 API。如果已有实现无法满足您的需求,可以使用 IMKit 中相关 API。
撤回消息
RCConversationViewController
直接提供了撤回消息的 API。只有存储并发送成功的消息才可以撤回。
- (void)recallMessage:(long)messageId;
参数 | 类型 | 说明 |
---|---|---|
messageId | long | 被撤回消息的消息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