成员属性
更新时间: 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 | 删除成员属性 |
此文档是否对你有帮助?