更新时间: 2021-03-08
# 功能描述
从 4.0.3
版本开始支持单条消息扩展信息设置功能。
功能描述如下:
对已发送并且已设置扩展标识的消息,可设置扩展信息,支持融云内置消息及自定义消息。
信息以 Key、Value 的方式进行存储,单条消息可设置 300 个扩展信息。
该功能仅支持单聊、群聊会话类型,暂不支持在聊天室中使用。
如已开通历史消息云存储功能,针对某一条消息设置的扩展信息,也会同时保存到该条消息的历史记录中。
每个终端在设置扩展信息时,如未达到上线都可以进行设置,所在并发情况下,会出现设置超过 300 的情况,超出部分不会进行丢弃删除。
每次设置消息扩展将会产生内置通知消息,频繁设置扩展会产生大量消息,如果对消息量增长敏感,请谨慎使用此功能。
适用场景:
需要对原始消息增加状态标识的需求, 都可使用消息扩展
比如消息评论需求,可通过设置原始消息扩展信息的方式添加评论信息
比如礼物领取、订单状态变化需求,通过此功能改变消息显示状态. 向用户发送礼物,默认为未领取状态,用户点击后可设置消息扩展为已领取状态
# IMLib 的 Message 对象新增属性
发送消息时,该条消息设置了可扩展属性后,才能设置扩展信息,消息可扩展属性相关功能如下:
/** * 消息是否包含扩展信息 * <p>该属性在消息发送时确定,发送之后不能再做修改;扩展信息只支持单聊和群组,其它会话类型不能设置扩展信息。</p> */ public boolean isCanIncludeExpansion(); /** * 设置是否可以包含扩展信息 * * @param canIncludeExpansion 是否可以包含扩展信息 */ public void setCanIncludeExpansion(boolean canIncludeExpansion); /** * 消息扩展信息列表 * * @return 消息扩展信息列表 */ public Map<String, String> getExpansion(); /** * 设置消息扩展信息列表 * <p>扩展信息只支持单聊和群组,其它会话类型不能设置扩展信息。</p> * * @param expansion 消息扩展信息列表 */ public void setExpansion(HashMap<String, String> expansion);
已复制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# RongIMClient 新增接口
# 更新扩展信息
输入参数说明:
参数 | 类型 | 说明 |
---|---|---|
expansion | Map | 要更新的消息扩展信息键值对 |
messageUId | String | 消息 messageUId |
callback | OperationCallback | 更新扩展消息回调 |
/** * 更新消息扩展信息 * <p>每条消息携带扩展信息键值对最大值 300个,单次设置扩展信息键值对最大值 20个</p> * * @param expansion 要更新的消息扩展信息键值对,类型是 HashMap;Key 支持大小写英文字母、数字、部分特殊符号 + = - _ 的组合方式,不支持汉字。Value 可以输入空格。 * @param messageUId 消息 messageUId * @param callback 更新扩展信息回调 */ public void updateMessageExpansion(final Map<String, String> expansion, final String messageUId, final OperationCallback callback)
已复制
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 删除扩展信息
输入参数说明:
参数 | 类型 | 说明 |
---|---|---|
keyArray | List | 消息扩展信息中待删除的 key 的列表 |
messageUId | String | 消息 messageUId |
successBlock | Block | 成功的回调 |
callback | OperationCallback | 删除扩展消息的回调 |
/** * 删除消息扩展信息中特定的键值对 * * @param keyArray 消息扩展信息中待删除的 key 的列表,类型是 ArrayList * @param messageUId 消息 messageUId * @param callback 删除消息扩展信息回调 */ public void removeMessageExpansion(final List<String> keyArray, final String messageUId, final OperationCallback callback)
已复制
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 扩展信息操作监听
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
listener | MessageExpansionListener | 是 | IMLib 消息扩展监听器 |
/** * 设置消息扩展监听 * * @param listener 消息扩展监听 */ public void setMessageExpansionListener(MessageExpansionListener listener) { messageExpansionListener = listener; }
已复制
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
参数 | 类型 | 说明 |
---|---|---|
expansion | Map | 消息扩展信息中更新的键值对 |
message | Message | 消息 |
public interface MessageExpansionListener { /** * 消息扩展信息更改的回调 * <p>expansion 只包含更新的键值对,不是全部的数据。如果想获取全部的键值对,请使用 message 的 expansion 属性。</p> * * @param expansion 消息扩展信息中更新的键值对 * @param message 消息 */ void onMessageExpansionUpdate(Map<String, String> expansion, Message message);
已复制
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
参数 | 类型 | 说明 |
---|---|---|
keyArray | List | 消息扩展信息中删除的键值对 key 列表 |
message | Message | 消息 |
/** * 消息扩展信息删除的回调 * * @param keyArray 消息扩展信息中删除的键值对 key 列表 * @param message 消息 */ void onMessageExpansionRemove(List<String> keyArray, Message message); }
已复制
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8