全部文档

( 最近更新时间:2020-04-28 19:00:00 )

# 功能描述

3.0.7 版本开始支持单条消息扩展信息设置功能,功能描述如下:

  • 对已发送并且已设置扩展标识的消息,可设置扩展信息。

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

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

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

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

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

适用场景:

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

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

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

# 设置监听

  RongIMClient.setMessageExpansionListener({
    onUpdated: function(updatedExpansion) { // 新增、修改扩展监听
      /*
        updatedExpansion: {
          expansion: { key: value },
          messageUId: 'BKCP-VBUT-0006-9GPP'
        }
      */
      var expansion = updatedExpansion.expansion;   // 新增、修改的扩展信息
      var messageUId = updatedExpansion.messageUId; // 扩展消息的 messageUId
    },
    onDeleted: function(deletedExpansion) { // 删除扩展监听
      /*
        deletedExpansion: {
          deletedKeys: ['key1', 'key2'],
          messageUId: 'BKCP-VBUT-0006-9GPP'
        }
      */
      let deletedKeys = deletedExpansion.deletedKeys; // 删除扩展的 keys
      let messageUId = deletedExpansion.messageUId;   //扩展消息的 messageUId
    }
  })
已复制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

# 设置扩展

注意: 会话列表最后一条消息仅保存发送时携带的扩展,后续更新、删除扩展不会影响会话列表最后一条消息的扩展内容

参数说明:

参数 类型 必填 默认值 说明 最低版本
canIncludeExpansion Boolean false 是否支持扩展 2.6.0
expansion Object -- 扩展内容 2.6.0

代码示例:

var conversationType = RongIMLib.ConversationType.PRIVATE;  // 群聊, 其他会话选择相应的消息类型即可
var targetId = '接收方的 userId';  // 目标 Id
var msg = new RongIMLib.TextMessage({ content: 'hello RongCloud!', extra: '附加信息'});
var config = {
  canIncludeExpansion: true, //是否支持扩展
  expansion: { key: value }    //消息直接携带的扩展
};
RongIMClient.getInstance().sendMessage(conversationType, targetId, msg, {
  onSuccess: function (message) {
    console.log('发送文本消息成功', message);
  },
  onError: function (errorCode) {
    console.log('发送文本消息失败', errorCode);
  }
}, false, null, null, null, config);
已复制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

扩展限制:

  1. Key 支持英文、字母、数字、+、=、-、_
  2. Key 最大长度 32 字符
  3. Value 最大长度 64 字符
  4. 单次调用最多设置 20 个键值对
  5. 单条消息最多设置 300 个键值对

# 更新扩展

更新消息的扩展内容

参数说明:

参数 类型 必填 默认值 说明 最低版本
expansion Object -- 扩展内容 3.0.7
message Object -- 原消息体 3.0.7

代码示例:

var expansion = {
  key: '这是 value'
};
var message = {
  conversationType: 1,
  targetId: 'user1',
  messageUId: 'BK96-PP18-OIQ6-9GPP'
  // ....
};
RongIMClient.getInstance().updateMessageExpansion(expansion, message, {
  onSuccess: function () {
    console.log('设置成功')
  },
  onError: function (reason) {
    console.log('设置失败', reason)
  }
});
已复制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

# 删除扩展

参数说明:

参数 类型 必填 默认值 说明 最低版本
keys Array -- 删除的 keys 3.0.7
message Object -- 原消息体 3.0.7

代码示例:

var keys = ['key1', 'key2'];
var message = {
  conversationType: 1,
  targetId: 'user1',
  messageUId: 'BK96-PP18-OIQ6-9GPP'
  //...
};
RongIMClient.getInstance().removeMessageExpansionForKey(keys, message, {
  onSuccess: function () {
    console.log('删除成功')
  },
  onError: function (reason) {
    console.log('删除失败')
  }
});
已复制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

文档是否解决您的问题 ?

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