logo
当前页

房间属性管理


功能简介

ZIM SDK 的房间属性功能,提供了可在指定房间中,设置自定义属性的能力。

通常可以应用在语音直播、聊天室等的属性同步、语聊房的麦位管理、以及狼人杀等卡牌类游戏中,记录用户的角色和牌局状态等场景中。

实现流程

开发者需要在调用 createRoom 接口时,设置房间属性参数,创建并加入房间。

注意
  • 每个房间中,最多允许设置 20 个属性,以 Key-Value 的方式进行存储。Key的长度上限为 16 字节,Value的长度上限为 1024 字节,所有属性的总长度不得超过 5120 字节。开发者如果需要提高属性上限,请联系 ZEGO 技术支持。
  • 房间销毁后,设置的自定义属性也会同时销毁。
示例代码
ZIMRoomInfo zimRoomInfo = new ZIMRoomInfo();
// roomID 是一个最大长度为32字节的字符串。它只支持数字、英文字母和以下特殊字符:'~', '!', ' '#', '$', '%', '^', '&', '*', '(', ')', '_', '+', '=', '-', '`', ';', '’', ',', '.', '<', '>', '/', '\'.
zimRoomInfo.roomID = "roomID";
// roomName 是一个最大长度为64字节的字符串,没有特殊字符限制。
zimRoomInfo.roomName = "roomName";
Dictionary<string, string> roomAttributes = new Dictionary<string, string>();
roomAttributes.Add("test1", "test2");
ZIMRoomAdvancedConfig zimRoomAdvancedInfo = new ZIMRoomAdvancedConfig();
zimRoomAdvancedInfo.roomAttributes = roomAttributes;
ZIM.GetInstance().CreateRoom(zimRoomInfo, zimRoomAdvancedInfo, (ZIMRoomFullInfo roomInfo, ZIMError errorCode) =>
    {
        if (errorCode.code == ZIMErrorCode.Success)
        {
            // 创建成功
        }
    }
);
1
Copied!

设置房间属性

每个房间中,设置的属性以 Key-Value 的形式存储。

  • 当 Key 不存在时,设置房间属性表示增加属性。
  • 当 key 已经存在时,设置房间属性表示更新已有属性的取值。
示例代码
ZIMRoomAttributesSetConfig config = new ZIMRoomAttributesSetConfig();
config.isUpdateOwner = false;
config.isForce = false;
config.isDeleteAfterOwnerLeft = false;
Dictionary<string, string> roomAttributes = new Dictionary<string, string>();
roomAttributes.Add("test1", "test2");

ZIM.GetInstance().SetRoomAttributes(roomAttributes, "roomID", config, (string roomID, List<string> errorKeys, ZIMError errorInfo) =>
    {
        if(errorInfo.code == ZIMErrorCode.Success)
        {
           // 设置成功。
       }
   }
);
1
Copied!

删除房间属性

通常开发者只能删除自己拥有的属性,也可以设置 “config” 中的 “isForce” 参数取值,删除他人创建的属性。

示例代码
List<string> attributeKeyList = new List<string>();
attributeKeyList.Add("xxxx");
ZIMRoomAttributesDeleteConfig config = new ZIMRoomAttributesDeleteConfig();
config.isForce = true;
ZIM.GetInstance().DeleteRoomAttributes(attributeKeyList, "roomID", config, (string roomID, List<string> errorKeys, ZIMError errorInfo) =>
    {

    }
);
1
Copied!

获取房间属性

通过调用 QueryRoomAllAttributes 接口,可以获取房间的所有属性。

注意

登录房间时,房间最新属性将通过 OnRoomAttributesUpdated 回调返回,无需调用 QueryRoomAllAttributes

示例代码
ZIM.GetInstance().QueryRoomAllAttributes("roomID", (string roomID, Dictionary<string, string> roomAttributes, ZIMError errorInfo) =>
    {
        if(errorInfo.code == ZIMErrorCode.Success)
        {
           // 操作成功。
        }
    }
);
1
Copied!

房间属性组合操作

组合操作可以使用 beginRoomAttributesBatchOperationendRoomAttributesBatchOperation 方法将同一房间中,多个不同操作合并为一个原子操作进行执行,通常用于连续操作时不想被其他用户操作插入执行的情况。

示例代码
ZIMRoomAttributesBatchOperationConfig operationConfig = new ZIMRoomAttributesBatchOperationConfig();
operationConfig.isForce = false;
operationConfig.isDeleteAfterOwnerLeft = true;
ZIM.GetInstance().BeginRoomAttributesBatchOperation("房间ID", operationConfig);

ZIM.GetInstance().EndRoomAttributesBatchOperation("房间ID", (string roomID, ZIMError errorInfo) => { } );
1
Copied!

Previous

房间资料管理

Next

房间用户管理