当前页面展示的文档已停止维护,给您带来不便请谅解,单击链接可跳转至当前产品介绍页面 >>

房间属性

更新时间: 2024/08/23 16:13:54

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

注意事项

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

设置房间属性

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

设置初始房间属性

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

virtual void createRoom(const NECreateRoomParams& params, const NECreateRoomOptions& options, const NERoomCallback& callback) = 0;

示例代码如下:

    NECreateRoomParams params;
    params.roomName = ui->leRoomName->text().toStdString();
    params.roomUuid = ui->leRoomUuid->text().toStdString();
    params.configId = ui->leRoomConfigId->text().toInt();
    std::map<std::string, std::string> roomProperties;
    roomProperties["key1"] = "value1";
    roomProperties["key2"] = "value2";
    params.initialProperties = roomProperties;
    NECreateRoomOptions options;
    options.enableRtc = true;
    options.enableChatroom = true;
    options.enableWhiteboard = true;
    options.enableRecord = true;
    options.enableLive = true;
    m_pRoomkit->getRoomService()->createRoom(params, options, [this](int code, const std::string& msg){
        qInfo() << "code: " << code;
        qInfo() << "msg: " << QString::fromStdString(msg);
    });

房间内设置属性

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

    virtual void updateRoomProperty(const std::string& key, const std::string& value, const std::string& assiciatedUserUuid = "", const NERoomContextCallback& callback = NERoomContextCallback()) = 0;

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

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

示例代码如下:

    auto context = m_pRoomKit->getRoomService()->getRoomContext(roomUuid);
    if(context){
        std::string key = "key1";
        std::string value = "value1";
        std::string assiciatedUserUuid = "123456";
        context->updateRoomProperty(key, value, assiciatedUserUuid, [this](int code, const std::string& msg){
        });
    }

查询房间属性

通过 NERoomContextgetRoomProperties() 可查询到当前时刻下房间的所有属性。该字段返回一个 Map,Map 中的每个 Entry 为一个房间属性,key 即为属性名称,value 为属性值。

virtual std::map<std::string, std::string> getRoomProperties() const = 0;

删除房间属性

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

virtual void deleteRoomProperty(const std::string& key, const NERoomContextCallback& callback) = 0;

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

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

示例代码如下:

    auto context = m_pRoomKit->getRoomService()->getRoomContext(roomUuid);
    if(context){
        std::string key = "key1";
        context->deleteRoomProperty(key, [this](int code, const std::string& msg){
        });
    }

监听房间属性变更

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

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

示例代码如下:

    // 添加房间事件监听
    class NERoomListener : public INERoomListener {
    public:
        NERoomListener();
        virtual void onRoomPropertiesChanged(const std::map<std::string, std::string>& properties) override;
        virtual void onRoomPropertiesDeleted(const std::map<std::string, std::string>& properties) override;
    };

    auto context = m_pRoomKit->getRoomService()->getRoomContext(roomUuid);
    if(context){
        auto listener = new NERoomListener();
        context->addRoomListener(listener);
    }

API 参考

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