群成员用户信息
要在 Global IM UIKit UI 上展示群成员昵称,需要应用层(App)主动向 Global IM UIKit SDK 提供群成员用户信息(GroupUserInfo
)。
Global IM UIKit 使用 UserInfoConifg
类统一管理以下数据。App 需要使用 UserInfoConifg
向 Global IM UIKit 提供数据,用于在 UI 上展示。
- 用户信息:包含昵称、头像
- 群组信息:包含群组名称、群组头像
- 群成员用 户信息:仅支持群用户昵称
用户信息、群组信息、群成员用户信息必须由应用开发者主动从 App 服务端获取,并提供给 SDK。融云不提供 App 用户与群组信息托管服务。融云服务端的用户昵称及头像仅用于推送服务。
本文仅描述了应用层(App)如何为 Global IM UIKit SDK 提供群成员昵称与头像(GroupUserInfo
)。
GroupUserInfo groupUserInfo = new GroupUserInfo(groupId, userId, nickname, extra);
刷新群成员用户信息
如果 App 本地持有群组用户信息数据(群昵称),可直接刷新本地缓存和数据库中存储的群组用户信息数据。刷新后,Global IM UIKit UI 会展示最新的群成员用户信息 GroupUserInfo
。
刷新群组用户信息必须在 Global IM UIKit 已成功建立 IM 连接后操作,否则无法刷新本地数据。可能适用场景如下:
- App 首次启动,并成功建立 IM 连接以后,可以将自身业务所需的群组用户信息批量提供给 SDK,由 SDK 写入缓存与本地数据库,供后续使用。
- 在 IM 建立连接后,如果群组用户昵称变动,由 App 服务端通知客户端(例如使用消息),客户端调用接口刷新群组用户信息。
ConfigCenter.getUserInfoConfig().refreshGroupUserInfoCache(groupUserInfo);
如果 App 本地不持有数据,推荐在 Global IM UIKit 需要展示数据时动态提供群成员用户信息。
动态提供群成员用户信息
从 Global IM UIKit 5.X 版本开始,SDK 设计了「群成员用户信息提供者」UserDataProvider.GroupUserInfoProvider
接口类。如果 Global IM UIKit 无法从 UserInfoConfig
中获取群成员用户信息,将触发 GroupUserInfoProvider
的 getGroupUserInfo
回调方法。App 应在该回调中提供 SDK 所需要的群成员昵称。
获取群成员用户信息数据后,SDK 会自动设置、群成员的群内昵称,以及实现相关 UI 展示。
/**
* GroupUserInfo提供者。
*/
public interface GroupUserInfoProvider {
/**
* 获取GroupUserInfo。
*
* @param groupId 群组id。
* @param userId 用户id。
* @return GroupUserInfo。
*/
GroupUserInfo getGroupUserInfo(String groupId, String userId);
}