用户信息
提示
IMKit 支持两种用户信息展示方式
- 用户信息提供者代理方式(当前文档):必须由应用开发者主动从 App 服务端获取用户信息、群组信息、群成员用户信息,并提供给 SDK。融云服务端注册获取 Token 时传入的用户昵称及头像仅用于推送服务。
- 用户信息托管方式:5.12.0 版本及之后,IMKit 支持用户切换信息托管方式实现会话页面和会话列表用户、群组信息的显示。
IMKit 使用 RongUserInfoManager 类统一管理以下数据。App 需要使用 RongUserInfoManager 向 IMKit 提供数据,用于在 UI 上展示。
- 用户信息:包含昵称、头像
- 群组信息:包含群组名称、群组头像
- 群成员用户信息:仅支持群用户昵称
本文仅描述了应用层(App)如何为 IMKit SDK 提供用户昵称与头像(UserInfo):
刷新用户信息
如果 App 本地持有用户信息数据(例如当前登录用户的昵称和头像),可直接刷新本地缓存和数据库中存储的用户信息(头像与昵称)。刷新后,IMKit UI 会自动展示最新的用户信息 UserInfo。
刷新用户信息必须在 IMKit 已成功建立 IM 连接后操作,否则无法刷新本地数据。可能适用场景如下:
- App 首次启动,并成功建立 IM 连接以后,可以将自身业务所需的用户信息批量提供给 SDK,由 SDK 写入缓存与本地数据库,供后续使用。
- 在 IM 建立连接后,如果用户昵称、头像等信息变动,由 App 服务端通知客户端(例如使用消息),客户端调用接口刷新用户信息。
Java
UserInfo userInfo = new UserInfo(userId, "userId 对应的名称", Uri.parse("userId 对应头像地址"));
RongUserInfoManager.getInstance().refreshUserInfoCache(userInfo);
如果 App 本地不持有数据,推荐在 IMKit 需要展示数据时动态提供用户信息。
动态提供用户信息
从 IMKit 5.X 版本开始,SDK 设计了用户信息提供者 UserDataProvider.UserInfoProvider 接口类。如果 IMKit 无法从 RongUserInfoManager 中获取用户信息,将触发 UserInfoProvider 的 getUserInfo 回调方法。App 应在该回调中提供 SDK 所需要的用户头像与昵称。获取用户信息数据后,SDK 会自动设置、刷新用户头像与昵称,以及实现相关 UI 展示。