更新时间: 2021-03-08

# 功能描述

4.0.3 版本开始支持单条消息扩展信息设置功能。

功能描述如下:

  • 对已发送并且已设置扩展标识的消息,可设置扩展信息,支持融云内置消息及自定义消息。

  • 信息以 Key、Value 的方式进行存储,单条消息可设置 300 个扩展信息。

  • 该功能仅支持单聊、群聊会话类型,暂不支持在聊天室中使用。

  • 如已开通历史消息云存储功能,针对某一条消息设置的扩展信息,也会同时保存到该条消息的历史记录中。

  • 每个终端在设置扩展信息时,如未达到上线都可以进行设置,所在并发情况下,会出现设置超过 300 的情况,超出部分不会进行丢弃删除。

  • 每次设置消息扩展将会产生内置通知消息,频繁设置扩展会产生大量消息,如果对消息量增长敏感,请谨慎使用此功能。

适用场景:

需要对原始消息增加状态标识的需求, 都可使用消息扩展

  • 比如消息评论需求,可通过设置原始消息扩展信息的方式添加评论信息

  • 比如礼物领取、订单状态变化需求,通过此功能改变消息显示状态. 向用户发送礼物,默认为未领取状态,用户点击后可设置消息扩展为已领取状态

# IMLib 的 RCMessage 对象新增属性

发送消息时,该条消息设置了可扩展属性后,才能设置扩展信息,消息可扩展属性相关功能如下:

/*!
 消息是否可以包含扩展信息
 
 @discussion 该属性在消息发送时确定,发送之后不能再做修改
 @discussion 扩展信息只支持单聊和群组,其它会话类型不能设置扩展信息
*/
@property (nonatomic, assign) BOOL canIncludeExpansion;

/*!
 消息扩展信息列表
 
 @discussion 扩展信息只支持单聊和群组,其它会话类型不能设置扩展信息
 @discussion 默认消息扩展字典 key 长度不超过 32 ,value 长度不超过 64 ,单次设置扩展数量最大为 20,消息的扩展总数不能超过 300
*/
@property (nonatomic, strong) NSDictionary<NSString *, NSString *> *expansionDic;
已复制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# RCIMClient 新增消息扩展接口

# 更新扩展信息

输入参数说明:

参数 类型 说明
expansionDic NSDictionary 要更新的消息扩展信息键值对
messageUId NSString 消息 messageUId
successBlock Block 成功的回调
errorBlock Block 失败的回调

返回参数说明:

error 说明:

回调参数 回调类型 说明
status RCErrorCode 失败的错误码
[[RCIMClient sharedRCIMClient] updateMessageExpansion:expansionDic messageUId:messageUId success:^{
    
} error:^(RCErrorCode status) {
    
}];
已复制
1
2
3
4
5
# 删除扩展信息

输入参数说明:

参数 类型 说明
keyArray NSArray 消息扩展信息中待删除的 key 的列表
messageUId NSString 消息 messageUId
successBlock Block 成功的回调
errorBlock Block 失败的回调

返回参数说明:

error 说明:

回调参数 回调类型 说明
status RCErrorCode 失败的错误码
[[RCIMClient sharedRCIMClient] removeMessageExpansionForKey:keyArray messageUId:messageUId success:^{

} error:^(RCErrorCode status) {

}];
已复制
1
2
3
4
5
# 设置回调

实现此功能需要开发者遵守 RCMessageExpansionDelegate 协议

代理对象参数说明:

参数 类型 必填 说明
delegate id IMLib 消息扩展监听器
[RCIMClient sharedRCIMClient].messageExpansionDelegate = self;
已复制
1

协议方法参数说明:

参数 类型 说明
expansionDic NSDictionary 消息扩展信息中更新的键值对
message RCMessage 消息
- (void)messageExpansionDidUpdate:(NSDictionary<NSString *,NSString *> *)expansionDic message:(RCMessage *)message{

}
已复制
1
2
3
参数 类型 说明
keyArray NSArray 消息扩展信息中删除的键值对 key 列表
message RCMessage 消息
- (void)messageExpansionDidRemove:(NSArray<NSString *> *)keyArray message:(RCMessage *)message{

}
已复制
1
2
3

文档是否解决您的问题 ?

如果遇到产品相关问题,您可 提交工单 寻求帮助