更新时间: 2021-03-08
# 功能描述
从 4.0.3
版本开始支持单条消息扩展信息设置功能。
功能描述如下:
对已发送并且已设置扩展标识的消息,可设置扩展信息,支持融云内置消息及自定义消息。
信息以 Key、Value 的方式进行存储,单条消息可设置 300 个扩展信息。
该功能仅支持单聊、群聊会话类型,暂不支持在聊天室中使用。
如已开通历史消息云存储功能,针对某一条消息设置的扩展信息,也会同时保存到该条消息的历史记录中。
每个终端在设置扩展信息时,如未达到上线都可以进行设置,所在并发情况下,会出现设置超过 300 的情况,超出部分不会进行丢弃删除。
每次设置消息扩展将会产生内置通知消息,频繁设置扩展会产生大量消息,如果对消息量增长敏感,请谨慎使用此功能。
适用场景:
需要对原始消息增加状态标识的需求, 都可使用消息扩展
比如消息评论需求,可通过设置原始消息扩展信息的方式添加评论信息
比如礼物领取、订单状态变化需求,通过此功能改变消息显示状态. 向用户发送礼物,默认为未领取状态,用户点击后可设置消息扩展为已领取状态
# IMLib 的 RCMessage 对象新增属性
发送消息时,该条消息设置了可扩展属性后,才能设置扩展信息,消息可扩展属性相关功能如下:
bool canIncludeExpansion; // 消息是否可以包含扩展信息 Map expansionDic; // 消息扩展信息列表
已复制
1
2
2
# RCIMClient 新增消息扩展接口
# 更新扩展信息
输入参数说明:
参数 | 类型 | 说明 |
---|---|---|
expansionDic | NSDictionary | 要更新的消息扩展信息键值对 |
messageUId | NSString | 消息 messageUId |
finished | Block | 结果回调 |
返回参数说明:
finished 说明:
回调参数 | 回调类型 | 说明 |
---|---|---|
code | int | 是否删除成功,0 代表成功 |
RongIMClient.updateMessageExpansion( expansionDic, messageUId, (int code) { });
已复制
1
2
3
4
2
3
4
# 删除扩展信息
输入参数说明:
参数 | 类型 | 说明 |
---|---|---|
keyArray | NSArray | 消息扩展信息中待删除的 key 的列表 |
messageUId | NSString | 消息 messageUId |
finished | Block | 结果回调 |
返回参数说明:
finished 说明:
回调参数 | 回调类型 | 说明 |
---|---|---|
code | int | 是否删除成功,0 代表成功 |
RongIMClient.removeMessageExpansionForKey( keyArray, messageUId, (int code) { });
已复制
1
2
3
4
2
3
4
# 设置回调
实现此功能需要开发者实现下面两个方法
方法参数说明:
参数 | 类型 | 说明 |
---|---|---|
expansionDic | NSDictionary | 消息扩展信息中更新的键值对 |
message | RCMessage | 消息 |
RongIMClient.messageExpansionDidUpdate = (Map expansionDic, Message message) async { };
已复制
1
2
3
2
3
RongIMClient.messageExpansionDidUpdate = (Map expansionDic, Message message) async { };
已复制
1
2
3
2
3
参数 | 类型 | 说明 |
---|---|---|
keyArray | NSArray | 消息扩展信息中删除的键值对 key 列表 |
message | RCMessage | 消息 |
RongIMClient.messageExpansionDidRemove = (List keyArray, Message message) async { };
已复制
1
2
3
2
3