浏览 SDKs · Flutter
SDKsFlutter

获取指定用户资料

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

复制

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

如果产品需要按昵称、手机号、组织或邮箱检索用户,应先由可信后端完成搜索和权限校验,再把返回的 userID 交给 SDK。管理员 Token 只能保存在后端。

查询公开资料

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 查询。按昵称、手机号、组织、邮箱等字段进行模糊搜索时,必须由可信后端负责鉴权、限流、脱敏和审计,管理员 Token 不能保存在 Flutter 客户端。

按场景选择展示数据

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

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

好友备注和群内昵称分别来自好友关系与群成员资料,不能用 PublicUserInfo.nickname 覆盖。相关读取方式见 getFriendListPage()getFriendsInfo()群成员查询

下一步