更新时间: 2020-08-27
可在指定聊天室中设置自定义属性,用于语音直播聊天室场景的会场属性同步或狼人杀等卡牌类游戏场景中记录用户的角色和牌局状态等。
- 每个聊天室中,最多允许设置 100 个属性信息,以
Key-Value
的方式进行存储。 - 每个聊天室中,每秒钟最多允许操作
Key-Value
100 次。 - 聊天室销毁后,聊天室中的自定义属性同时销毁。
- 使用此功能需要在开发者后台免费基础功能中开通 聊天室属性自定义设置 (opens new window)功能。
# 参数说明
代理对象参数说明:
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
listener | KVStatusListener | 是 | IMLib 消息接收监听器 |
协议方法参数说明:
参数 | 类型 | 说明 |
---|---|---|
roomId | String | 聊天室 Id |
chatRoomKvMap | Map<String, String> | 修改或者删除的 KV 字典 |
# 示例代码
RongIMClient.getInstance().setKVStatusListener(new RongIMClient.KVStatusListener() { /** * 加入聊天室成功后,SDK 默认从服务端同步 KV 列表,同步完成后触发 * * @param roomId 聊天室 Id */ @Override public void onChatRoomKVSync(String roomId) { } /** * 更新时全量返回 KV 属性,更新包含新增、修改 * * @param roomId 聊天室 Id * @param chatRoomKvMap 发生变化的 KV */ @Override public void onChatRoomKVUpdate(String roomId, Map<String, String> chatRoomKvMap) { } /** * KV 被删除时触发 * * @param roomId 聊天室 Id * @param chatRoomKvMap 被删除的 KV */ @Override public void onChatRoomKVRemove(String roomId, Map<String, String> chatRoomKvMap) { } });
已复制
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
29
30
31
32
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
29
30
31
32
# 设置属性
# 参数说明
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
chatRoomId | String | 是 | 聊天室 ID |
key | String | 是 | 聊天室属性名称,Key 支持大小写英文字母、数字、部分特殊符号 + = - _ 的组合方式,最大长度 128 个字符 |
value | String | 是 | 聊天室属性对应的值,最大长度 4096 个字符 |
sendNotification | boolean | 是 | true 发送通知; false 不发送. 如果发送通知,SDK 会接收到 RC:chrmKVNotiMsg 通知消息 ChatRoomKVNotiMessage,并且消息内容中包含 K,V |
autoDelete | boolean | 是 | 退出后是否删除 |
notificationExtra | String | 是 | 通知的自定义字段,RC:chrmKVNotiMsg(ChatRoomKVNotiMessage), 通知消息中会包含此字段,最大长度 2 kb |
callback | OperationCallback | 是 | 回调接口 |
# 示例代码
String chatRoomId = "聊天室 ID"; String key = "name"; String value = "融融"; boolean sendNotification = true; boolean isAutoDel = false; String notificationExtra = "通知消息扩展"; RongIMClient.getInstance().setChatRoomEntry(chatRoomId, key, value, sendNotification, isAutoDel, notificationExtra, new RongIMClient.OperationCallback() { /** * 成功回调 */ @Override public void onSuccess() { } /** * 失败回调 * @param errorCode 错误码 */ @Override public void onError(RongIMClient.ErrorCode errorCode) { } });
已复制
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
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
# 强制设置属性
强制设置聊天室属性. 以 key = value
的形式存储. 当 key 不存在时,代表增加属性; 当 key 已经存在时,代表更新属性的值.
使用强制设置可修改他人创建的属性值.
# 参数说明
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
chatRoomId | String | 是 | 聊天室 ID |
key | String | 是 | 聊天室属性名称,Key 支持大小写英文字母、数字、部分特殊符号 + = - _ 的组合方式,最大长度 128 个字符 |
value | String | 是 | 聊天室属性对应的值,最大长度 4096 个字符 |
sendNotification | boolean | 是 | true 发送通知; false 不发送. 如果发送通知,SDK 会接收到 RC:chrmKVNotiMsg 通知消息 ChatRoomKVNotiMessage,并且消息内容中包含 K,V |
autoDelete | boolean | 是 | 退出后是否删除 |
notificationExtra | String | 是 | 通知的自定义字段,RC:chrmKVNotiMsg 通知消息中会包含此字段,最大长度 2 kb |
callback | OperationCallback | 是 | 回调接口 |
# 示例代码
String chatRoomId = "聊天室 ID"; String key = "name"; String value = "融融"; boolean sendNotification = true; boolean isAutoDel = false; String notificationExtra = "通知消息扩展"; RongIMClient.getInstance().forceSetChatRoomEntry(chatRoomId, key, value, sendNotification, isAutoDel, notificationExtra, new RongIMClient.OperationCallback() { /** * 成功回调 */ @Override public void onSuccess() { } /** * 失败回调 * @param errorCode 错误码 */ @Override public void onError(RongIMClient.ErrorCode errorCode) { } });
已复制
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 删除属性
删除聊天室自定义属性. 只可删除当前用户所创建的属性.
# 参数说明
参数 | 类型 | 必填 | 说明 | 最低版本 |
---|---|---|---|---|
chatRoomId | String | 是 | 聊天室 ID | |
key | String | 是 | 聊天室属性名称,Key 支持大小写英文字母、数字、部分特殊符号 + = - _ 的组合方式,最大长度 128 个字符 | |
value | String | 是 | 聊天室属性对应的值,最大长度 4096 个字符 | |
sendNotification | boolean | 是 | true 发送通知; false 不发送. 如果发送通知,SDK 会接收到 RC:chrmKVNotiMsg 通知消息 ChatRoomKVNotiMessage,并且消息内容中包含 K,V | |
notificationExtra | String | 是 | 通知的自定义字段,RC:chrmKVNotiMsg 通知消息中会包含此字段,最大长度 2 kb | |
callback | OperationCallback | 是 | 回调接口 |
# 示例代码
RongIMClient.getInstance().removeChatRoomEntry(chatRoomId, key, value, sendNotification, notificationExtra, new RongIMClient.OperationCallback() { /** * 成功回调 */ @Override public void onSuccess() { } /** * 失败回调 * @param errorCode 错误码 */ @Override public void onError(RongIMClient.ErrorCode errorCode) { } });
已复制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 强制删除
强制删除聊天室自定义属性. 可删除他人所创建的属性.
# 参数说明
参数 | 类型 | 必填 | 说明 | 最低版本 |
---|---|---|---|---|
chatRoomId | String | 是 | 聊天室 ID | |
key | String | 是 | 聊天室属性名称,Key 支持大小写英文字母、数字、部分特殊符号 + = - _ 的组合方式,最大长度 128 个字符 | |
value | String | 是 | 聊天室属性对应的值,最大长度 4096 个字符 | |
sendNotification | boolean | 是 | true 发送通知; false 不发送. 如果发送通知,SDK 会接收到 RC:chrmKVNotiMsg 通知消息 ChatRoomKVNotiMessage,并且消息内容中包含 K,V | |
notificationExtra | String | 是 | 通知的自定义字段,RC:chrmKVNotiMsg 通知消息中会包含此字段,最大长度 2 kb | |
callback | OperationCallback | 是 | 回调接口 |
# 示例代码
RongIMClient.getInstance().forceRemoveChatRoomEntry(chatRoomId, key, value, sendNotification, notificationExtra, new RongIMClient.OperationCallback() { /** * 成功回调 */ @Override public void onSuccess() { } /** * 失败回调 * @param errorCode 错误码 */ @Override public void onError(RongIMClient.ErrorCode errorCode) { } });
已复制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 获取单个属性
# 参数说明
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
chatRoomId | String | 是 | 聊天室 ID |
key | String | 是 | 聊天室属性名称,Key 支持大小写英文字母、数字、部分特殊符号 + = - _ 的组合方式,最大长度 128 个字符 |
callback | ResultCallback<Map<String, String>> | 是 | 回调接口 |
# 代码示例
String chatRoomId = "聊天室 ID"; public void getChatRoomEntry(chatRoomId, new RongIMClient.ResultCallback<Map<String, String>>() { /** * 成功回调 * @param entryMap 属性值 */ @Override public void onSuccess(Map<String, String> entryMap) { } /** * 失败回调 * @param errorCode 错误码 */ @Override public void onError(RongIMClient.ErrorCode errorCode) { } });
已复制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 获取所有属性
# 参数说明
参数 | 类型 | 必填 | 说明 | 最低版本 |
---|---|---|---|---|
chatRoomId | String | 是 | 聊天室 ID | |
callback | ResultCallback<Map<String, String>> | 是 | 回调接口 |
# 代码示例
String chatRoomId = "聊天室 ID"; public void getAllChatRoomEntries(chatRoomId, new RongIMClient.ResultCallback<Map<String, String>>() { /** * 成功回调 * @param entryMap 属性值 */ @Override public void onSuccess(Map<String, String> entryMap) { } /** * 失败回调 * @param errorCode 错误码 */ @Override public void onError(RongIMClient.ErrorCode errorCode) { } });
已复制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20