跳到主要内容

消息修改

从 5.26.0 版本开始,IMLib 支持消息修改功能,支持所有存储类型消息(文本、图片(包含 GIF)、语音(高清、普通)、视频、引用、文件、自定义消息)的内容修改。

消息修改

开发者可通过 modifyMessageWithParams:completionHandler: 接口修改消息。

参数类型说明
paramsRCModifyMessageParams消息修改参数
completionHandlerBlock结果回调

在接口中,params 是对修改信息的封装 RCModifyMessageParams,其内容如下:

参数类型说明
messageUIdNSString消息唯一 ID
messageContentRCMessageContent修改后的消息体
Objective C
RCTextMessage *messageContent = (RCTextMessage *)message.content;
messageContent.content = @"modified_text";
RCModifyMessageParams *params = [[RCModifyMessageParams alloc] init];
params.messageUId = message.messageUId;
params.messageContent = messageContent;
[[RCCoreClient sharedCoreClient] modifyMessageWithParams:params completionHandler:^(RCMessage * _Nonnull message, RCErrorCode code) {
// TODO code
}];

消息修改回调

消息修改后,多端或其他用户会收到消息修改的回调,会通过 RCIMClientReceiveMessageDelegate 协议中的 onMessagesModified:onModifiedMessageSyncCompleted 方法进行回调。

Objective C
// 在初始化时注册代理。
[[RCCoreClient sharedCoreClient] setReceiveMessageDelegate:self object:nil];

// 在业务逻辑中实现回调方法。
- (void)onMessagesModified:(NSArray<RCMessage *> *)messages {
// 消息被修改。
}

- (void)onModifiedMessageSyncCompleted {
// 每次连接成功后,会同步远端修改信息。
}

刷新引用消息

开发者可通过 refreshReferenceMessageWithParams:localMessageBlock:remoteMessageBlock:errorBlock: 接口刷新引用消息。

参数类型说明
paramsRCRefreshReferenceMessageParams消息修改参数
localMessageBlockBlock本地结果回调
remoteMessageBlockBlock远端结果回调
errorBlockBlock错误回调

在接口中,params 是对刷新信息的封装 RCRefreshReferenceMessageParams,其内容如下:

参数类型说明
messageUIdsNSArray消息唯一 ID 列表,最多 20 个
conversationIdentifierRCConversationIdentifier会话标识
Objective C
RCRefreshReferenceMessageParams *params = [[RCRefreshReferenceMessageParams alloc] init];
RCConversationIdentifier *identifier = [[RCConversationIdentifier alloc] init];
identifier.type = message.conversationType;
identifier.targetId = message.targetId;
identifier.channelId = message.channelId;
params.conversationIdentifier = identifier;
params.messageUIds = @[message.messageUId];
params.messageContent = messageContent;
[[RCCoreClient sharedCoreClient] refreshReferenceMessageWithParams:params
localMessageBlock:^(NSArray<RCMessageResult *> * _Nonnull results) {
// TODO 本地消息
} remoteMessageBlock:^(NSArray<RCMessageResult *> * _Nonnull results) {
// TODO 远端消息
} errorBlock:^(RCErrorCode code) {
// TODO 错误处理
}];