tencent cloud

14天试用边缘安全加速平台 EO 限时免费

文档反馈

即时通信 IM

Android&iOS&Windows&Mac

最后更新时间:2025-01-03 10:36:20

功能描述

您只能搜索本地存储过的群成员,例如拉取过的群成员列表、拉取过的群成员资料等。
说明:
本地群成员搜索功能仅增强版 SDK 5.4.666 及以上版本支持,直播群(AVChatRoom)不在本地存储群成员,无法使用群成员搜索功能。
本地群成员搜索为进阶版功能,购买进阶版后可使用。

搜索本地群成员

您可以调用接口 searchGroupMembers (Java / Swift / Objective-C / C++) 搜索本地群成员。 您可以设置搜索关键字 keywordList,并指定搜索的范围,即是否搜索群成员的 memberUserIDmemberNickNamememberRemarkmemberNameCard 字段。
根据 searchGroupMembers 入参 V2TIMGroupMemberSearchParam (Java / Swift / Objective-C / C++) 中的 groupIDList 是否为空(null/nil),分为两种情况:
如果设置 groupIDList 为空,代表搜索全部群中的群成员,返回的结果会按照 groupID 进行分类;
如果设置 groupIDList 不为空,代表搜索指定群中的群成员。
示例代码如下:
Java
Swift
Objective-C
C++
V2TIMGroupMemberSearchParam searchParam = new V2TIMGroupMemberSearchParam();
searchParam.setGroupIDList(groupIDList);
searchParam.setKeywordList(keywordList);
searchParam.setSearchMemberUserID(true);
searchParam.setSearchMemberNickName(true);
searchParam.setSearchMemberRemark(true);
searchParam.setSearchMemberNameCard(true);

V2TIMManager.getGroupManager().searchGroupMembers(searchParam, new V2TIMValueCallback<HashMap<String, List<V2TIMGroupMemberFullInfo>>>() {
@Override
public void onSuccess(HashMap<String, List<V2TIMGroupMemberFullInfo>> stringListHashMap) {
StringBuilder stringBuilder = new StringBuilder();
for (Map.Entry<String, List<V2TIMGroupMemberFullInfo>> entry : stringListHashMap.entrySet()) {
// 群 ID
String groupID = entry.getKey();
// 群成员列表
List<V2TIMGroupMemberFullInfo> memberFullInfoList = entry.getValue();
}
}
}

@Override
public void onError(int code, String desc) {
// 搜索群成员失败
}
});
let param = V2TIMGroupMemberSearchParam()
param.groupIDList = ["group1","group2"]
param.keywordList = ["keyword1", "keyword2", "keyword3"];
param.isSearchMemberUserID = true
param.isSearchMemberNickName = true
param.isSearchMemberRemark = true
param.isSearchMemberNameCard = true

V2TIMManager.shared.searchGroupMembers(searchParam: param) { memberList in
memberList.forEach { (key: String, value: Array<V2TIMGroupMemberFullInfo>) in
print( "key:\\(key), value:\\(value)")
}
} fail: { code, desc in
print( "searchGroupMembers fail, \\(code), \\(desc)")
}
V2TIMGroupMemberSearchParam *searchParam = [[V2TIMGroupMemberSearchParam alloc] init];
searchParam.groupIDList = @[@"group1", @"group2"];
searchParam.keywordList = @[@"keyword1", @"keyword2"];
searchParam.isSearchMemberUserID = YES;
searchParam.isSearchMemberNickName = YES;
searchParam.isSearchMemberRemark = YES;
searchParam.isSearchMemberNameCard = YES;
[[V2TIMManager sharedInstance] searchGroupMembers:searchParam succ:^(NSDictionary<NSString *,NSArray<V2TIMGroupMemberFullInfo *> *> *memberList) {
for (NSString *key in memberList.allKeys) {
// 群 ID
NSString *groupID = key;
// 群成员列表
NSArray *memberFullInfoList = memberList[key];
}
} 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_;
};

V2TIMGroupMemberSearchParam param;
param.groupIDList = groupIDList;
param.keywordList = keywordList;
param.isSearchMemberUserID = true;
param.isSearchMemberNickName = true;
param.isSearchMemberRemark = true;
param.isSearchMemberNameCard = true;

auto callback = new ValueCallback<V2TIMGroupSearchGroupMembersMap>{};
callback->SetCallback(
[=](const V2TIMGroupSearchGroupMembersMap& groupSearchGroupMembersMap) {
V2TIMStringVector allKeys = groupSearchGroupMembersMap.AllKeys();
for (size_t i = 0; i < allKeys.Size(); i++) {
// 群 ID
const V2TIMString& groupID = allKeys[i];
// 群成员列表
V2TIMGroupMemberFullInfoVector groupMemberFullInfoList = groupSearchGroupMembersMap.Get(groupID);
}
delete callback;
},
[=](int error_code, const V2TIMString& error_message) {
// 搜索群成员失败
delete callback;
});

V2TIMManager::GetInstance()->GetGroupManager()->SearchGroupMembers(param, callback);



产品类别

文档章节

Android&iOS&Windows&Mac

联系我们

联系我们,为您的业务提供专属服务。

技术支持

如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

7x24 电话支持
中国香港
+852 800 906 020 (免费)
美国
+1 844 606 0804 (免费)
英国
+44 808 196 4551 (免费)
加拿大
+1 888 605 7930 (免费)
澳大利亚
+61 1300 986 386 (免费)
EdgeOne 热线
+852 300 80699
更多本地服务热线陆续新增中