( 最近更新时间: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
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
扩展限制:
- Key 支持英文、字母、数字、+、=、-、_
- Key 最大长度 32 字符
- Value 最大长度 64 字符
- 单次调用最多设置 20 个键值对
- 单条消息最多设置 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
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15