浏览 SDKs · Flutter
平台
SDKsFlutter

获取指定用户资料

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

复制

getUsersInfo() 可以按 userID 查询应用用户的公开资料,适合展示好友候选人和陌生人资料卡。

按昵称、手机号、组织或邮箱等业务字段检索用户时,可以先由业务后端返回候选 userID,再用本方法查询公开资料。

查询公开资料

final userIDList = {'user_a', 'user_b'}.toList();

try {
  final users = await OpenIM.iMManager.userManager.getUsersInfo(
    userIDList: userIDList,
  );
  final usersByID = {
    for (final user in users)
      if (user.userID != null) user.userID!: user,
  };
  showUsers(usersByID);
} catch (error) {
  logUserQueryFailure(error, userIDList);
  rethrow;
}

userIDList 是必填的 OpenIMSDK 用户 ID 数组。调用前应去重并控制单次数量。

返回结果

Future 成功后返回 List<PublicUserInfo>

字段说明
userIDOpenIMSDK 用户 ID。
nickname账号级公开昵称。
faceURL账号级公开头像地址。
ex账号级扩展字符串,格式由业务约定。

这里返回的 ex 只用于读取其他账号的公开扩展资料。Flutter 客户端不能通过 User API 修改其他账号的公开资料;当前用户自己的 ex 通过 setSelfInfo() 更新,完整值覆盖规则见更新当前用户资料

调用结果与资料刷新

查询成功后,以返回的 List<PublicUserInfo> 更新当前展示的公开资料。页面同时展示多个用户时,先收集可见项中的 userID,去重后批量查询,再按 userID 合并结果。

该纯查询不会触发 OnUserListener。打开资料卡、用户主动刷新、断线重连或业务后端通知资料变化时,可重新调用 getUsersInfo() 获取最新资料。

OnUserListener.onSelfInfoUpdated 只携带当前登录用户的 UserInfo,不能当作任意用户公开资料事件。

搜索添加好友

搜索并添加好友时,通常先由业务后端返回候选 userID,再调用 getUsersInfo() 展示公开资料。用户确认目标后,再进入好友申请流程。

只支持按用户 ID 精确搜索时,可以直接把输入值作为 userID 查询。按昵称、手机号、组织、邮箱等字段进行模糊搜索时,由业务后端提供候选 ID。

按场景选择展示数据

同一个 userID 在不同场景中可能对应不同的展示名称和关系数据,应按当前界面选择数据源:

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

好友备注和群内昵称分别来自好友关系与群成员资料,不能用 PublicUserInfo.nickname 覆盖。相关读取方式见分页获取好友列表查询指定好友资料群成员查询

下一步