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