即时通信 IM Android&iOS&Windows&Mac(群成员资料)

群成员资料类为 V2TIMGroupMemberFullInfo,内含群成员 userID、自定义信息、角色、禁言等信息。
相关方法在核心类 V2TIMGroupManager(Java) / V2TIMManager+Group (Objective-C、Swift 语言) 中。

相关产品
即时通信 IM 产品页,含版本规格、价格与购买入口。

一、获取群成员资料

你可以调用 getGroupMembersInfo (Java / Swift / Objective-C / C++) 获取群成员资料。该接口支持批量获取,你可以一次传入多个 userID 获取多个群成员的资料,从而提升网络传输效率。

示例代码如下:

JavaSwiftObjective-CC++List<String> userIDList = new ArrayList<>();userIDList.add("userA");userIDList.add("userB");V2TIMManager.getGroupManager().getGroupMembersInfo("groupA", userIDList, new V2TIMValueCallback<List<V2TIMGroupMemberFullInfo>>() { @Override public void onSuccess(List<V2TIMGroupMemberFullInfo> v2TIMGroupMemberFullInfos) { // 获取成功 } @Override public void onError(int code, String desc) { // 获取失败 }});V2TIMManager.shared.getGroupMembersInfo(groupID: "groupID", memberList: ["user1", "user2"]) { memberList in memberList.forEach { item in print( item.description) }} fail: { code, desc in print( "getGroupMemberList fail, \\(code), \\(desc)")}[[V2TIMManager sharedInstance] getGroupMembersInfo:@"groupA" memberList:@[@"user1"] succ:^(NSArray<V2TIMGroupMemberFullInfo *> *memberList) { // 获取成功} fail:^(int code, NSString *desc) { // 获取失败}];template <class T>class ValueCallback final : public V2TIMValueCallback<T> {public: using SuccessCallback = std::function<void(const T&)>; using ErrorCallback = std::function<void(int, const V2TIMString&)>; 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_;};V2TIMString groupID = "groupA";V2TIMStringVector memberList;memberList.PushBack("userA");memberList.PushBack("userB");auto callback = new ValueCallback<V2TIMGroupMemberFullInfoVector>{};callback->SetCallback( [=](const V2TIMGroupMemberFullInfoVector& groupMemberFullInfoList) { // 获取成功 delete callback; }, [=](int error_code, const V2TIMString& error_message) { // 获取失败 delete callback; });V2TIMManager::GetInstance()->GetGroupManager()->GetGroupMembersInfo(groupID, memberList, callback);

二、修改群成员资料

群主或管理员可以调用 setGroupMemberInfo (Java / Swift / Objective-C / C++) 接口修改群成员的群名片(nameCard)、自定义字段(customInfo)等与群成员相关的资料。

普通群成员可以调用 setGroupMemberInfo 设置自己的群名片(nameCard)、自定义字段(customInfo)等信息。

注意:说明:

注意:直播群(AVChatRoom)不存储群成员信息,设置直播群成员名片不适用于直播群。

如果要修改群成员自定义字段,你必须提前在 即时通信 IM 控制台 配置好该字段,配置页面如下:

注意:群成员自定义字段最多可设置 5 个。字段创建后,该字段将不可删除,也无法修改字段名与字段类型。

示例代码如下:

JavaSwiftObjective-CC++V2TIMGroupMemberFullInfo memberFullInfo = new V2TIMGroupMemberFullInfo();// 指定修改的群成员memberFullInfo.setUserID("userA");// 设置修改的 nameCard 值memberFullInfo.setNameCard("userA_namecard");// 设置群成员自定义字段Map<String, byte[]> customMap = new HashMap<>();customMap.put("member_key1", "value1".getBytes());memberFullInfo.setCustomInfo(customMap);V2TIMManager.getGroupManager().setGroupMemberInfo("groupA", memberFullInfo, new V2TIMCallback() { @Override public void onSuccess() { // 修改成功 } @Override public void onError(int code, String desc) { // 修改失败 }});let info = V2TIMGroupMemberFullInfo()info.userID = "userA"info.nameCard = "userA_namecard"info.customInfo = ["Str": "value1".data(using: .utf8) ?? Data()]V2TIMManager.shared.setGroupMemberInfo(groupID: "groupID", info: info) { print( info.description)} fail: { code, desc in print( "setGroupMemberInfo fail, \\(code), \\(desc)")}V2TIMGroupMemberFullInfo *info = [[V2TIMGroupMemberFullInfo alloc] init];info.userID = @"userA";info.nameCard = @"userA_namecard";info.customInfo = @{@"Str" : [@"value1" dataUsingEncoding:NSUTF8StringEncoding]};[[V2TIMManager sharedInstance] setGroupMemberInfo:@"groupID" info:info succ:^{ } fail:^(int code, NSString *desc) { }];class Callback final : public V2TIMCallback {public: using SuccessCallback = std::function<void()>; using ErrorCallback = std::function<void(int, const V2TIMString&)>; 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_;};// Specify a group memberV2TIMGroupMemberFullInfo info;info.userID = "userA";// Set the `nameCard` value to be modifiedinfo.nameCard = "userA_namecard";info.modifyFlag = V2TIMGroupMemberInfoModifyFlag::V2TIM_GROUP_MEMBER_INFO_MODIFY_FLAG_NAME_CARD;// Set a group member custom fieldV2TIMCustomInfo customInfo;std::string str{u8"value1"};customInfo.Insert("member_key1", {reinterpret_cast<const uint8_t*>(str.data()), str.size()});info.customInfo = customInfo;info.modifyFlag |= V2TIMGroupMemberInfoModifyFlag::V2TIM_GROUP_MEMBER_INFO_MODIFY_FLAG_CUSTOM_INFO;auto callback = new Callback;callback->SetCallback( [=]() { // Modified successfully delete callback; }, [=](int error_code, const V2TIMString& error_message) { // Failed to modify delete callback; });V2TIMManager::GetInstance()->GetGroupManager()->SetGroupMemberInfo("userA", info, callback);

赞 (0)
上一篇 4天前
下一篇 4天前