房间属性

更新时间: 2023/09/27 03:29:38

房间属性是附加到当前房间上的一系列key-value键值对,key为属性唯一名称,value 为当前属性值。 NERoom 允许开发者自定义房间属性,并在房间生命周期内对属性进行添加、更新、删除操作,同时还可以监听属性变更通知。

注意事项

  • 在使用房间属性前,需要在控制台中创建对应属性,指定属性名称,并进行权限配置。
  • 房间属性仅对当前设置的房间有效,在当前房间生命周期结束后会被统一清理,下次创建房间需要重新设置。

设置房间属性

NERoom 支持在创建房间时设置属性,或加入房间后设置和更新属性。

设置初始房间属性

在创建房间时,通过 NECreateRoomParams.initialProperties 参数可设置房间初始属性。

fun createRoom(params: NECreateRoomParams, options: NECreateRoomOptions, callback: NECallback<Unit>)

示例代码如下:

        // 填充房间属性
        Map<String,String> initialRoomProperties = new HashMap<String,String>();
        NECreateRoomParams params=new NECreateRoomParams( ..., initialRoomProperties, ...);
        NECreateRoomOptions options = new NECreateRoomOptions();
        NERoomService roomService = NERoomKit.getInstance().getService(NERoomService.class);
        roomService.createRoom(params, options, new NECallback2<Unit>() {
            @Override
            public void onSuccess(@Nullable Unit unit) {
                super.onSuccess(unit);
                Log.d(TAG,"success");
            }

            @Override
            public void onError(int code, @Nullable String message) {
                super.onError(code, message);
                Log.d(TAG,"error");
            }
        });

房间内设置属性

在加入房间后,可通过 NERoomContext.updateRoomProperty 接口进行房间属性的设置和更新。

fun updateRoomProperty(
    key: String,
    value: String,
    associatedUserUuid: String? = null,
    callback: NECallback<Unit>,
)

相关参数说明如下表所示。

参数 描述
key 属性名称,如果不存在该属性,则设置该属性;如果已存在该属性,则更新该属性。请确保已在云信控制台对应的模板中配置相关属性,否则会报错。
value 属性值。
associatedUserUuid 指定该属性关联的用户。若成功关联,则该房间属性在关联用户离开房间后,会自动删除。
callback 回调。

示例代码如下:

        roomContext.updateRoomProperty("key", "value", null, new NECallback2<Unit>() {
            @Override
            public void onSuccess(@Nullable Unit unit) {
                super.onSuccess(unit);
                Log.d(TAG,"success");
            }

            @Override
            public void onError(int code, @Nullable String message) {
                super.onError(code, message);
                Log.d(TAG,"error");
            }
        });

查询房间属性

通过 NERoomContext.roomProperties 可查询到当前时刻下房间的所有属性。

该字段返回一个 Map,Map 中的每个 Entry 为一个房间属性,key 即为属性名称,value 为属性值。

val roomProperties: Map<String, String>

删除房间属性

在加入房间后,可通过 NERoomContext.deleteRoomProperty 接口进行房间属性的删除。

fun deleteRoomProperty(
    key: String,
    callback: NECallback<Unit>,
)

相关参数说明如下表所示。

参数 描述
key 待删除的属性名称
callback 回调

示例代码如下:

        roomContext.deleteRoomProperty("key", new NECallback2<Unit>() {
            @Override
            public void onSuccess(@Nullable Unit unit) {
                super.onSuccess(unit);
                Log.d(TAG,"success");
            }

            @Override
            public void onError(int code, @Nullable String message) {
                super.onError(code, message);
                Log.d(TAG,"error");
            }
        });

监听房间属性变更

在进行属性操作之后,会触发属性变更通知,通过以下回调接口监听到变更事件:

  • NERoomListener.onRoomPropertiesChanged: 属性变更回调通知
  • NERoomListener.onRoomPropertiesDeleted: 属性删除回调通知

示例代码如下:

roomContext.addRoomListener(new NERoomListener() {

    ...

    @Override
    public void onRoomPropertiesChanged(Map<String, String> properties) {
        // todo
    }

    @Override
    public void onRoomPropertiesDeleted(Map<String, String> properties) {
        // todo
    }
});

API 参考

方法 功能描述
updateRoomProperty 更新房间属性
deleteRoomProperty 删除房间属性
此文档是否对你有帮助?
有帮助
去反馈
  • 注意事项
  • 设置房间属性
  • 设置初始房间属性
  • 房间内设置属性
  • 查询房间属性
  • 删除房间属性
  • 监听房间属性变更
  • API 参考