tencent cloud

文档反馈

Android & iOS & Mac

最后更新时间:2023-07-17 16:58:14

    功能描述

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

    搜索本地群成员

    您可以调用接口 searchGroupMembers (Android / iOS & Mac / Windows) 搜索本地群成员。 您可以设置搜索关键字 keywordList,并指定搜索的范围,即是否搜索群成员的 memberUserIDmemberNickNamememberRemarkmemberNameCard 字段。
    根据 searchGroupMembers 入参 V2TIMGroupMemberSearchParam (Android / iOS & Mac / Windows) 中的 groupIDList 是否为空(null/nil),分为两种情况:
    如果设置 groupIDList 为空,代表搜索全部群中的群成员,返回的结果会按照 groupID 进行分类;
    如果设置 groupIDList 不为空,代表搜索指定群中的群成员。
    示例代码如下:
    Android
    iOS & Mac
    Windows
    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) {
    // 搜索群成员失败
    }
    });
    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);
    联系我们

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

    技术支持

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

    7x24 电话支持