Android&iOS&Windows&Mac
搜索云端用户
功能描述
您可以通过用户 ID、昵称、性别等信息来搜索云端用户,以便快速找到所需的用户资料。此功能适用于需要查找特定用户信息的场合,例如在熟人社交场景中查找用户以加好友,或者在陌生人社交场景中查找用户以关注。
搜索云端用户接口
调用接口
searchUsers
(Java / Swift / Objective-C / C++) 可以搜索云端用户资料,该接口返回的是云端存储的用户资料,包括好友和非好友资料,您可以调用 checkFriend
(Java / Swift / Objective-C / C++) 接口来判断是否为好友。V2TIMUserSearchParam
的参数说明如下:参数 | 含义 | 说明 |
keywordList | 关键字列表 | 关键字列表最多支持 5 个,keyword 会自动匹配用户 ID、昵称。 |
keywordListMatchType | 指定关键字列表匹配类型 | 可设置为 “或” 关系搜索,或 “与” 关系搜索。取值分别为 V2TIM_KEYWORD_LIST_MATCH_TYPE_OR 和 V2TIM_KEYWORD_LIST_MATCH_TYPE_AND 。默认为 “或” 关系搜索。 |
gender | 用户性别 | 如果不设置,默认男性和女性都会返回。 |
minBirthday | 用户最小生日 | 如果不设置,默认值为 0。 |
maxBirthday | 用户最大生日 | 如果不设置,默认 birthday >= minBirthday 的用户都会返回。 |
searchCount | 搜索的数量 | 必须大于 0,最大支持 100,默认 20。 |
searchCursor | 搜索的游标 | 搜索的起始位置,第一次填写空字符串,续拉时填写上一次返回的 V2TIMUserSearchResult 中的 searchCursor 。 |
用户搜索结果类
参数 | 含义 | 说明 |
isFinished | 搜索是否已完成 | 是否已经返回全部满足搜索条件的用户列表。 |
totalCount | 搜索结果总数 | 满足搜索条件的用户总数量。 |
nextCursor | 续拉的游标 | 调用搜索接口续拉时需要填的游标。 |
userList | 用户列表 | 当前一次云端搜索返回的用户列表。 |
示例代码如下:
V2TIMUserSearchParam searchParam = new V2TIMUserSearchParam();searchParam.setKeywordList(keywordList);searchParam.setKeywordListMatchType(param.V2TIM_KEYWORD_LIST_MATCH_TYPE_OR);searchParam.setSearchCount(20);searchParam.setSearchCursor("");V2TIMManager.getInstance().searchUsers(searchParam, new V2TIMValueCallback<V2TIMUserSearchResult>() {@Overridepublic void onSuccess(V2TIMUserSearchResult userSearchResult) {// 搜索云端用户资料成功}@Overridepublic void onError(int code, String desc) {// 搜索云端用户资料失败}});
let param = V2TIMUserSearchParam()param.gender = .V2TIM_GENDER_UNKNOWN;param.keywordList = ["keyword1", "keyword2"];param.keywordListMatchType = .V2TIM_KEYWORD_LIST_MATCH_TYPE_OR;param.searchCount = 20;param.searchCursor = "";V2TIMManager.shared.searchUsers(param: param) { searchResult in// 搜索云端用户资料成功} fail: { code, desc in// 搜索云端用户资料失败}
V2TIMUserSearchParam *param = [[V2TIMUserSearchParam alloc] init];param.gender = V2TIM_GENDER_UNKNOWN;param.keywordList = @[@"keyword1", @"keyword2"];param.keywordListMatchType = V2TIM_KEYWORD_LIST_MATCH_TYPE_OR;param.searchCount = 20;param.searchCursor = @"";[[V2TIMManager sharedInstance] searchUsers:param succ:^(V2TIMUserSearchResult *searchResult) {// 搜索云端用户资料成功} 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_;};V2TIMUserSearchParam searchParam;searchParam.keywordList = keywordList;param.keywordListMatchType = V2TIM_KEYWORD_LIST_MATCH_TYPE_OR;param.searchCount = 20;param.searchCursor = "";auto callback = new ValueCallback<V2TIMUserSearchResult>{};callback->SetCallback([=](const V2TIMUserSearchResult& userSearchResult) {// 搜索云端用户资料成功delete callback;},[=](int error_code, const V2TIMString& error_message) {// 搜索云端用户资料失败delete callback;});V2TIMManager::GetInstance()->SearchUsers(searchParam, callback);