更新时间: 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

# 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
# 删除扩展信息

输入参数说明:

参数 类型 说明
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
# 扩展信息操作监听
参数 类型 必填 说明
listener MessageExpansionListener IMLib 消息扩展监听器
 /**
  * 设置消息扩展监听
  *
  * @param listener 消息扩展监听
  */
  public void setMessageExpansionListener(MessageExpansionListener listener) {
       messageExpansionListener = listener;
  }

已复制
1
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
参数 类型 说明
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

文档是否解决您的问题 ?

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