浏览 SDKs · iOS
平台
SDKsiOS

获取指定用户资料

按 userID 批量查询应用用户公开资料(OIMPublicUserInfo)。

复制

调用批量获取用户资料接口按 userID 查询应用用户的公开资料,适合好友候选人和陌生人资料卡展示。按昵称、手机号、组织或邮箱等业务字段搜索用户时,可先由业务后端返回候选 userID,再用本方法查询公开资料。

参数说明

参数类型说明
userIDsNSArray<NSString *> *待查询的用户 ID 列表。建议在调用前去重并控制单次请求数量。
NSArray<NSString *> *inputUserIDs = @[@"user_a", @"user_b", @"user_a"];
NSArray<NSString *> *userIDs = [NSOrderedSet orderedSetWithArray:inputUserIDs].array;
[[OIMManager manager] getUsersInfo:userIDs
                         onSuccess:^(NSArray<OIMPublicUserInfo *> *users) {
                             for (OIMPublicUserInfo *user in users) {
                                 publicUsersByID[user.userID] = user;
                             }
                         }
                         onFailure:^(NSInteger code, NSString *message) {
                             NSLog(@"getUsersInfo failed: %ld %@", (long)code, message);
                         }];

返回结果

成功回调 onSuccess 返回查询到的 OIMPublicUserInfo 数组:

属性类型说明
userIDNSString *OpenIMSDK 用户 ID。
nicknameNSString *账号级公开昵称。
faceURLNSString *账号级公开头像地址。
exNSString *账号级扩展字段,格式由业务约定。

这里的 ex 属于只读属性。客户端不能直接修改其他账号的公开资料;当前登录用户自己的资料与扩展字段需通过更新当前用户资料进行更新。

资料刷新与缓存

该查询只返回调用时的公开资料快照,不触发公开用户资料事件。打开资料卡、手动刷新、断线重连,或收到业务后端的资料变更通知时,重新按 userID 查询。页面展示多个用户时,先收集可见项 ID、去重并批量查询,再按 userID 合并。

SDK 没有针对任意其他用户公开资料的通用变更 delegate;当前登录用户的个人资料变更回调只携带当前用户的完整信息,不能直接写入其他用户的公开资料缓存。

搜索添加好友

搜索并添加好友时,通常先由业务后端返回候选 ID,再查询公开资料:

[userDirectory searchUserIDs:keyword completion:^(NSArray<NSString *> *candidateIDs) {
    if (candidateIDs.count == 0) {
        [searchStore replaceResults:@[]];
        return;
    }

    [[OIMManager manager] getUsersInfo:candidateIDs
                             onSuccess:^(NSArray<OIMPublicUserInfo *> *users) {
                                 [searchStore replaceResults:users];
                             }
                             onFailure:^(NSInteger code, NSString *message) {
                                 NSLog(@"getUsersInfo failed: %ld %@", (long)code, message);
                             }];
}];

只支持用户 ID 精确搜索时,可以直接把输入值作为 userID 查询;模糊搜索或其他业务字段搜索由业务后端提供候选 ID。

按场景选择展示数据

场景优先使用
应用用户搜索、陌生人资料卡OIMPublicUserInfo
好友列表、联系人页、好友备注OIMFriendInfo
群成员列表、群内昵称、群角色OIMGroupMemberInfo

同一个 userID 在不同场景可能对应不同展示名称和关系数据。不要用公开昵称覆盖好友备注或群内昵称。

下一步