有奖捉虫:办公协同&微信生态&物联网文档专题 HOT

功能描述

您只能搜索本地存储过的用户,例如拉取过的好友列表,拉取过的用户资料等。
说明
本地用户搜索功能仅 5.4.666 及以上版本支持。
本地用户资料搜索为 IM 旗舰版功能,购买 旗舰版套餐包 后可使用,详见 价格说明

搜索本地用户资料

调用接口 searchFriends (Android / iOS & Mac / Windows) 可以搜索本地用户资料。 您可以设置搜索关键字 keywordList,并指定搜索的范围,即是否搜索用户的 userIDnickNameremark 字段。
示例代码如下:
Android
iOS & Mac
Windows
V2TIMFriendSearchParam searchParam = new V2TIMFriendSearchParam();
searchParam.setKeywordList(keywordList);
searchParam.setSearchUserID(true);
searchParam.setSearchNickName(true);
searchParam.setSearchRemark(true);

V2TIMManager.getFriendshipManager().searchFriends(searchParam, new V2TIMValueCallback<List<V2TIMFriendInfoResult>>() {
@Override
public void onSuccess(List<V2TIMFriendInfoResult> v2TIMFriendInfos) {
// 搜索用户资料成功
}

@Override
public void onError(int code, String desc) {
// 搜索用户资料失败
}
});
V2TIMFriendSearchParam *searchParam = [[V2TIMFriendSearchParam alloc] init];
searchParam.keywordList = @[@"keyword1", @"keyword2"];
searchParam.isSearchUserID = YES;
searchParam.isSearchNickName = YES;
searchParam.isSearchRemark = YES;
[[V2TIMManager sharedInstance] searchFriends:searchParam succ:^(NSArray<V2TIMFriendInfoResult *> *resultList) {
// 搜索用户资料成功
} 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_;
};

V2TIMFriendSearchParam searchParam;
searchParam.keywordList = keywordList;
searchParam.isSearchUserID = true;
searchParam.isSearchNickName = true;
searchParam.isSearchRemark = true;

auto callback = new ValueCallback<V2TIMFriendInfoResultVector>{};
callback->SetCallback(
[=](const V2TIMFriendInfoResultVector& friendInfoResultList) {
// 搜索用户资料成功
delete callback;
},
[=](int error_code, const V2TIMString& error_message) {
// 搜索用户资料失败
delete callback;
});

V2TIMManager::GetInstance()->GetFriendshipManager()->SearchFriends(searchParam, callback);