logo
即时通讯
客户端 SDK
当前页

房间用户管理


功能简介

ZIM SDK 支持设置房间内的用户属性,即在房间内,自定义房间内的用户属性。

可应用的场景:

  • 设置成员角色,如设置房主、管理员、观众、观众等级。
  • 开/关摄像头、开/关麦克风、是否能发言、是否共享白板等。

实现流程

注意
  • 每个房间中,最多允许设置 500 个用户的用户属性,以 Key-Value 的方式进行存储。开发者如果需要提高属性上限,请联系 ZEGO 技术支持。
  • 房间内的每个用户,所拥有的用户属性 Key-Value 的总长度不超过 144 字节,且 Key-Value 的个数不超过 30 对。单个 Key-Value 的长度,Key 不超过 8 字节、Value 不超过 64 字节。开发者如果需要提高上限,请联系 ZEGO 技术支持。
  • 房间销毁后,设置的自定义用户属性也会同时销毁。

设置用户属性

注意

操作者和被设置/修改属性的用户,都必须是该房间内的用户。

开发者可以通过 setRoomMembersAttributes 接口,设置房间内用户的用户属性。设置的房间用户属性以 Key-Value 的形式存储:

  • 当 Key 不存在时,设置用户属性表示增加属性。
  • 当 key 已经存在时,设置用户属性表示更新已有属性的取值。

设置成功后,可以通过 ZIMRoomMembersAttributesOperatedResult 的异步返回值,获取操作结果。

Map<String, String> attributes = {"key1": "value1"};
List<String> userIDs = ["userID1"];
ZIM
    .getInstance()
    ?.setRoomMembersAttributes(
        attributes, userIDs, 'roomID', ZIMRoomMemberAttributesSetConfig())
    .then((value) => {
        //这里填写成功后的逻辑
    })
    .catchError((onError) {
        //这里写失败后的逻辑
});

查询用户属性

房间内的用户,可以通过 queryRoomMembersAttributes 接口,查询房间内某些用户的用户属性。

查询成功后,可以通过 ZIMRoomMembersAttributesQueriedResult 的异步返回值,获取查询结果。

Map<String, String> attributes = {"key1": "value1"};
List<String> userIDs = ["userID1"];
ZIM
    .getInstance()
    ?.queryRoomMembersAttributes(userIDs, 'roomID')
    .then((value) => {
        //这里填写成功后的逻辑
    })
    .catchError((onError) {
        //这里写失败后的逻辑
    });

查询所有用户属性

房间内的用户,可以通过 queryRoomMemberAttributesList 接口,查询该房间内的所有用户的用户属性。

查询成功后,会返回该房间内所有用户的用户属性。可以通过 ZIMRoomMemberAttributesListQueriedResult 的异步返回值,获取查询结果。

ZIM
    .getInstance()
    ?.queryRoomMemberAttributesList(
        'roomID', ZIMRoomMemberAttributesQueryConfig())
    .then((value) => {
        //这里填写成功后的逻辑
    })
    .catchError((onError) {
        //这里写失败后的逻辑
    });

用户属性变更通知

当房间内成员的房间用户属性发生变更时,开发者可以通过注册 setEventHandler 的回调接口 onRoomMemberAttributesUpdated 方法,监听房间内成员的用户属性变更通知。


  ZIMEventHandler.onRoomMemberAttributesUpdated = (
      ZIM zim,List<ZIMRoomMemberAttributesUpdateInfo> infos,ZIMRoomOperatedInfo operatedInfo, String roomID){
    //这里写房间用户属性发生变更后的业务逻辑
  };
说明

在房间内,如果有用户调用了 setRoomMembersAttributes 接口时:

  • 当房间内人数在 500 人以内时,所有房间内的用户,均可以收到房用户属性变更的通知。
  • 当房间内人数超过 500 人时,仅操作者和被设置/修改属性的用户,可以收到房用户属性变更的通知。

开发者如果需要提高上限,请联系 ZEGO 技术支持。

Previous

房间属性管理

Next

群组管理

当前页

返回到顶部