房间属性管理
功能简介
ZIM SDK 的房间属性功能,提供了可在指定房间中,设置自定义属性的能力。
通常可以应用在语音直播、聊天室等的属性同步、语聊房的麦位管理、以及狼人杀等卡牌类游戏中,记录用户的角色和牌局状态等场景中。
实现流程
开发者需要在调用 createRoom 接口时,设置房间属性参数,创建并加入房间。
注意
- 每个房间中,最多允许设置 20 个属性,以
Key-Value
的方式进行存储。Key
的长度上限为 16 字节,Value
的长度上限为 1024 字节,所有属性的总长度不得超过 5120 字节。开发者如果需要提高属性上限,请联系 ZEGO 技术支持。 - 房间销毁后,设置的自定义属性也会同时销毁。
示例代码
ZIMRoomMemberQueryConfig roomMemberQueryConfig = ZIMRoomMemberQueryConfig();
roomMemberQueryConfig.count = 100;
// roomID 最大 128 字节的字符串。仅支持数字,英文字符 和 '~', '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '_', '+', '=', '-', '`', ';', '’', ',', '.', '<', '>', '/', '\'。
// roomName 最大 64 字节的字符串,无特殊字符限制。
ZIMRoomInfo roomInfo = ZIMRoomInfo();
roomInfo.roomID = 'roomID';
roomInfo.roomName = 'roomName';
ZIMRoomAdvancedConfig advancedConfig = ZIMRoomAdvancedConfig();
advancedConfig.roomAttributes = {'key': 'value'};
ZIM
.getInstance()
!.createRoom(roomInfo,advancedConfig)
.then((value) => {
//创建成功触发此处
})
.catchError((onError) {
//创建失败触发此处
});
1
设置房间属性
每个房间中,设置的属性以 Key-Value
的形式存储。
- 当 Key 不存在时,设置房间属性表示增加属性。
- 当 key 已经存在时,设置房间属性表示更新已有属性的取值。
设置房间属性后,可以通过 ZIMRoomAttributesOperatedCallResult 类型的异步返回值,返回设置房间属性的操作结果。
示例代码
Map<String, String> roomAttributes = {'key': 'value'};
ZIMRoomAttributesSetConfig roomAttributesSetConfig = ZIMRoomAttributesSetConfig();
ZIM
.getInstance()
!.setRoomAttributes(roomAttributes, 'roomID', roomAttributesSetConfig)
.then((value) => {
//成功触发此处
})
.catchError((onError) {
//失败触发此处
});
1
删除房间属性
通常开发者只能删除自己拥有的属性,也可以设置 “config” 中的 “isForce” 参数取值,删除他人创建的属性。
示例代码
List<String> keys = ['key1', 'key2'];
ZIMRoomAttributesDeleteConfig roomAttributesDeleteConfig = ZIMRoomAttributesDeleteConfig();
ZIM
.getInstance()
!.deleteRoomAttributes(keys, 'roomID', roomAttributesDeleteConfig)
.then((value) => {
//成功触发此处
})
.catchError((onError) {
//失败触发此处
});
1
获取房间属性
获取房间属性后,可以通过 ZIMRoomAttributesQueriedResult 类型的异步返回值,返回获取房间属性的操作结果。
示例代码
ZIM
.getInstance()
!.queryRoomAllAttributes('roomID')
.then((value) => {
//成功触发此处
})
.catchError((onError) {
//失败触发此处
});
1
房间属性组合操作
组合操作可以使用 beginRoomAttributesBatchOperation 和 endRoomAttributesBatchOperation 方法将同一房间中,多个不同操作合并为一个原子操作进行执行,通常用于连续操作时不想被其他用户操作插入执行的情况。
示例代码
ZIM
.getInstance()
!.beginRoomAttributesBatchOperation('roomID', batchOperationConfig)
.then((value) => {
//成功触发此处
})
.catchError((onError) {
//失败触发此处
});
ZIM
.getInstance()
!.endRoomAttributesBatchOperation('roomID')
.then((value) => {
//成功触发此处
})
.catchError((onError) {
//失败触发此处
});
1