获取指定用户资料
按 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>:
| 字段 | 说明 |
|---|---|
userID | OpenIMSDK 用户 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() 和群成员查询。
下一步
这个页面有帮助吗?