成员属性

更新时间: 2022/10/31 07:42:39

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

注意事项

  • 在使用成员属性前,需要在控制台中创建对应属性,指定属性名称,并进行权限配置。
  • 成员属性仅对当前房间内的目标成员有效,在当前房间生命周期结束后或成员中途离开房间,成员属性会统一被清理。

设置成员属性

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

设置初始成员属性

在加入房间时,通过 NEJoinRoomParams.initialProperties 参数可设置当前成员的初始属性。

virtual void joinRoom(const NEJoinRoomParams& params, const NEJoinRoomOptions& options, const NEJoinRoomCallback& callback) = 0;

示例代码如下:

    NEJoinRoomParams params;
    params.roomUuid = ui->leRoomUuid->text().toStdString();
    params.role = ui->leUserRole->text().toStdString();
    params.userName = ui->leUserName->text().toStdString();
    params.initialProperties.insert(std::make_pair("key", "value"));
    NEJoinRoomOptions options;
    m_pRoomkit->getRoomService()->joinRoom(params, options, [this, params](int code, const std::string& message, INERoomContext* roomContext){
        qInfo() << "onJoinRoom code: " << code;
        qInfo() << "onJoinRoom msg: " << QString::fromStdString(message);
    });

房间内设置属性

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

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

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

名称 描述
userUuid 成员uuid
key 待更新的属性的key值请确保已在云信控制台对应的模板中配置相关属性,否则会报错。
value 属性值

示例代码如下:

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

查询成员属性

通过 NERoomMember.getProperties() 可获取成员当前时刻的所有属性。key即为属性名称,value为属性值。

删除成员属性

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

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

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

名称 描述
userUuid 成员uuid
key 属性名称,如果存在,则删除

示例代码如下:

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

监听成员属性变更

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

  • NERoomListener.onMemberPropertiesChanged: 成员属性变更回调通知
  • NERoomListener.onMemberPropertiesDeleted: 成员属性删除回调通知

示例代码如下:

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

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

API 参考

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