扩展消息
消息扩展功能可为消息对象(RCMessage
)增加基于 Key/Value 的状态标识。消息的扩展信息可在发送前、后设置或更新,可用于实现消息评论、礼物领取、订单状态变化等业务需求。
提示
- 一条消息是否可携带或可设置扩展信息,由发送消息时
RCMessage
的可扩展(canIncludeExpansion
)属性决定,该属性必须在发送前设置,发送后无法修改。 - 单条消息单次最多可设置 20 个扩展信息 KV 对,总计不可超过 300 个扩展信息 KV 对。在并发情况下如出现设置超过 300 个的情况,超出部分会被丢弃。
- 如已开通历史消息云存储功能,从服务端 获取的历史消息也会携带已设置的扩展信息。
- 每次设置消息扩展将会产生内置通知消息,频繁设置扩展会产生大量消息。
监听消息处理
您可以通过设置 setRCUltraGroupMessageChangeDelegate
代理来监听远端用户对消息扩展的修改操作:
- 设置
setRCUltraGroupMessageChangeDelegate:
代理:
Objective C
[[RCChannelClient sharedChannelManager] setRCUltraGroupMessageChangeDelegate:self];
- 实现
onUltraGroupMessageExpansionUpdated:
消息扩展变更代理方法:
Objective C
/*!
消息扩展更新,删除
@param messages 消息集合
*/
- (void)onUltraGroupMessageExpansionUpdated:(NSArray<RCMessage*>*)messages {
}
发送消息前设置消息扩展信息
您可以构建新消息后,设置 RCMessage
的 canIncludeExpansion
属性打开或关闭某条消息的可扩展属性。
提示
- 必须在发送消息前设置
canIncludeExpansion
属性。
示例代码
Objective C
RCTextMessage *txt = [RCTextMessage messageWithContent:text];
RCMessage *msg = [[RCMessage alloc] initWithType:ConversationType_ULTRAGROUP targetId:self.targetId direction:(MessageDirection_SEND) messageId:-1 content:txt];
msg.canIncludeExpansion = YES;
msg.expansionDic = @{@"key1":@"value1",@"key2":@"value2"};
[[RCIMClient sharedRCIMClient] sendMessage:msg pushContent:nil pushData:nil successBlock:^(RCMessage *successMessage) {
} errorBlock:^(RCErrorCode nErrorCode, RCMessage *errorMessage) {
}];