腾讯云即时通信IMAndroid&iOS&Windows&Mac_AI解决方案_同尘科技

即时通信 IM 1年前 (2023-11-03) 浏览 26

功能描述

基于 API 2.0 我们设计了全新的群自定义字段,我们称之为 “群属性”。
基于群属性,我们可以做语聊房的麦位管理。当有人上麦的时候,可以设置一个群属性管理上麦人信息。当有人下麦的时候,可以删除对应群属性。其他成员可以通过获取群属性列表来展示麦位列表。
群属性通过键值对的方式表示,相关方法在核心类 V2TIMGroupManager(Android) / V2TIMManager(Group)(iOS & Mac) 中。说明6.7 及其以前版本,只支持 AVChatRoom 直播群;从 6.8 版本开始,同时支持 AVChatRoom、Public、Meeting、Work 四种群类型;从 7.0 版本开始,除了话题外,群属性支持所有的群类型。群属性功能特性有:1. 最多支持 16 个群属性,每个群属性的大小最大支持 4k,所有群属性的大小最大支持 16k。2. initGroupAttributessetGroupAttributesdeleteGroupAttributes 接口合并计算,SDK 限制为单个登录用户 5 秒 10 次,超过后回调 8511 错误码;后台限制单个登录用户 1 秒 5 次,超过后返回 10049 错误码。3. getGroupAttributes 接口 SDK 限制为单个登录用户 5 秒 20 次。4. 从 5.6 版本开始,当每次APP启动后初次修改群属性时,请您先调用 getGroupAttributes 拉取到最新的群属性之后,再发起修改操作。5. 从 5.6 版本开始,当多个用户同时修改同一个群属性时,只有第一个用户可以执行成功,其它用户会收到 10056 错误码;收到这个错误码之后,请您调用 getGroupAttributes 把本地保存的群属性更新到最新之后,再发起修改操作。

初始化群属性

调用 initGroupAttributes (Android / iOS & Mac / Windows) 接口可以初始化群属性。如果该群之前有群属性,会先清空原来的群属性。示例代码如下:AndroidiOS & MacWindows

V2TIMManager.getGroupManager().initGroupAttributes("groupA", attributeMap, new V2TIMCallback() {  @Override  public void onSuccess() {        // 初始化群属性成功  }
@Override public void onError(int code, String desc) { // 初始化群属性失败 }});
[[V2TIMManager sharedInstance] initGroupAttributes:@"groupA" attributes:@{@"key1" : @"value1"} succ:^{    // 初始化群属性成功} fail:^(int code, NSString *desc) {    // 初始化群属性失败}];
class Callback final : public V2TIMCallback {public:    using SuccessCallback = std::function;    using ErrorCallback = std::function;
Callback() = default; ~Callback() override = default;
void SetCallback(SuccessCallback success_callback, ErrorCallback error_callback) { success_callback_ = std::move(success_callback); error_callback_ = std::move(error_callback); }
void OnSuccess() override { if (success_callback_) { success_callback_(); } } void OnError(int error_code, const V2TIMString& error_message) override { if (error_callback_) { error_callback_(error_code, error_message); } }
private: SuccessCallback success_callback_; ErrorCallback error_callback_;};
V2TIMString groupID = "groupA";V2TIMGroupAttributeMap attributes;attributes.Insert("key1", "value1");attributes.Insert("key2'", "value2");
auto callback = new Callback;callback->SetCallback( [=]() { // 初始化群属性成功 delete callback; }, [=](int error_code, const V2TIMString& error_message) { // 初始化群属性失败 delete callback; });
V2TIMManager::GetInstance()->GetGroupManager()->InitGroupAttributes(groupID, attributes, callback);

设置群属性

调用 setGroupAttributes (Android / iOS & Mac / Windows) 接口可以设置群属性。如果设置的群属性不存在,会自动添加该群属性。示例代码如下:AndroidiOS & MacWindows

HashMap attributeMap = new HashMap();attributeMap.put("key1", "value1");attributeMap.put("key2", "value2");V2TIMManager.getGroupManager().setGroupAttributes("groupA", attributeMap, new V2TIMCallback() {  @Override  public void onSuccess() {        // 设置群属性成功  }
@Override public void onError(int code, String desc) { // 设置群属性失败 }});
[[V2TIMManager sharedInstance] setGroupAttributes:@"groupA" attributes:@{@"key1" : @"value1"} succ:^{    // 设置群属性成功} fail:^(int code, NSString *desc) {    // 设置群属性失败}];
class Callback final : public V2TIMCallback {public:    using SuccessCallback = std::function;    using ErrorCallback = std::function;
Callback() = default; ~Callback() override = default;
void SetCallback(SuccessCallback success_callback, ErrorCallback error_callback) { success_callback_ = std::move(success_callback); error_callback_ = std::move(error_callback); }
void OnSuccess() override { if (success_callback_) { success_callback_(); } } void OnError(int error_code, const V2TIMString& error_message) override { if (error_callback_) { error_callback_(error_code, error_message); } }
private: SuccessCallback success_callback_; ErrorCallback error_callback_;};
V2TIMString groupID = "groupA";V2TIMGroupAttributeMap attributes;attributes.Insert("key1", "value1");attributes.Insert("key2'", "value2");
auto callback = new Callback;callback->SetCallback( [=]() { // 设置群属性成功 delete callback; }, [=](int error_code, const V2TIMString& error_message) { // 设置群属性失败 delete callback; });
V2TIMManager::GetInstance()->GetGroupManager()->SetGroupAttributes(groupID, attributes, callback);

删除群属性

调用 deleteGroupAttributes (Android / iOS & Mac / Windows) 接口可以删除指定群属性,如果 keys 字段填 null/nil ,则会清空所有的群属性。示例代码如下:AndroidiOS & MacWindows

List keyList = new ArrayList();keyList.add("key1");V2TIMManager.getGroupManager().deleteGroupAttributes("groupA", keyList, new V2TIMCallback() {  @Override  public void onSuccess() {      // 删除成功  }
@Override public void onError(int code, String desc) { // 删除失败 }});
[[V2TIMManager sharedInstance] deleteGroupAttributes:@"groupA" keys:@[@"key1"] succ:^{    // 删除成功} fail:^(int code, NSString *desc) {    // 删除失败}];
class Callback final : public V2TIMCallback {public:    using SuccessCallback = std::function;    using ErrorCallback = std::function;
Callback() = default; ~Callback() override = default;
void SetCallback(SuccessCallback success_callback, ErrorCallback error_callback) { success_callback_ = std::move(success_callback); error_callback_ = std::move(error_callback); }
void OnSuccess() override { if (success_callback_) { success_callback_(); } } void OnError(int error_code, const V2TIMString& error_message) override { if (error_callback_) { error_callback_(error_code, error_message); } }
private: SuccessCallback success_callback_; ErrorCallback error_callback_;};
V2TIMString groupID = "groupA";V2TIMStringVector keys;keys.PushBack("key1");keys.PushBack("key2");
auto callback = new Callback;callback->SetCallback( [=]() { // 删除群属性成功 delete callback; }, [=](int error_code, const V2TIMString& error_message) { // 删除群属性失败 delete callback; });
V2TIMManager::GetInstance()->GetGroupManager()->DeleteGroupAttributes(groupID, keys, callback);

获取群属性

调用 getGroupAttributes (Android / iOS & Mac / Windows) 接口可以获取指定群属性,如果 keys 字段填 null/nil ,则会获取所有的群属性。说明getGroupAttributes 接口 SDK 限制为单个登录用户 5 秒 20 次。示例代码如下:AndroidiOS & MacWindows

V2TIMManager.getGroupManager().getGroupAttributes("groupA", null, new V2TIMValueCallback<Map>() {  @Override  public void onSuccess(Map stringStringMap) {      // 获取成功  }
@Override public void onError(int code, String desc) { // 获取失败 }});
[[V2TIMManager sharedInstance] getGroupAttributes:@"groupA" keys:nil succ:^(NSMutableDictionary *groupAttributeList) {    // 获取成功} fail:^(int code, NSString *desc) {    // 获取失败}];
template class ValueCallback final : public V2TIMValueCallback {public:    using SuccessCallback = std::function;    using ErrorCallback = std::function;
ValueCallback() = default; ~ValueCallback() override = default;
void SetCallback(SuccessCallback success_callback, ErrorCallback error_callback) { success_callback_ = std::move(success_callback); error_callback_ = std::move(error_callback); }
void OnSuccess(const T& value) override { if (success_callback_) { success_callback_(value); } } void OnError(int error_code, const V2TIMString& error_message) override { if (error_callback_) { error_callback_(error_code, error_message); } }
private: SuccessCallback success_callback_; ErrorCallback error_callback_;};
auto callback = new ValueCallback{};callback->SetCallback( [=](const V2TIMGroupAttributeMap& groupAttributeMap) { // 获取群属性成功 delete callback; }, [=](int error_code, const V2TIMString& error_message) { // 获取群属性失败 delete callback; });
V2TIMManager::GetInstance()->GetGroupManager()->GetGroupAttributes("groupID", {}, callback);

群属性更新

如果您事先调用 addGroupListener 添加了群组事件监听器,群属性有任何的更新变化,都会通过 onGroupAttributeChanged (Android / iOS & Mac / Windows) 回调出来所有的群属性字段。示例代码如下:Android

V2TIMManager.getInstance().addGroupListener(new V2TIMGroupListener() {  @Override  public void onGroupAttributeChanged(String groupID, Map groupAttributeMap) {      // 群属性变更通知  }});



对即时通讯IM解决方案有疑惑?想了解解决方案收费? 联系解决方案专家

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心,购买腾讯云享受折上折,更有现金返利:同意关联,立享优惠

阿里云解决方案也看看?: 点击对比阿里云的解决方案

- 0人点赞 -

发表点评 (0条)

not found

暂无评论,你要说点什么吗?