群组成员列表
提示
IMKit 支持两种用户信息展示方式
- 用户信息提供者代理方式(当前文档):必须由应用开发者主动从 App 服务端获取用户信息、群组信息、群成员用户信息,并提供给 SDK。融云服务端注册获取 Token 时传入的用户昵称及头像仅用于推送服务。
- [用户信息托管方式]:5.12.0 版本及之后,IMKit 支持用户切换信息托管方式实现会话页面和会话列表用户、群组信息的显示。
本文描述了应用层(App)如何为 IMKit SDK 提供群组成员数据,用于在群聊会话中输入 @ 符号时弹出的默认选人界面、发起群组音视频通话的选人界面。设置完成后,在 IMKit UI 中上需要展示群成员列表时可正常显示群组成员的头像、用户名或群内昵称。
了解群组成员提供者接口
SDK 在 RongMentionManager 类中定义了群组成员提供者(IGroupMembersProvider)。在 IMKit UI 需要展示群成员列表时,会触发 IGroupMembersProvider
的 getGroupMembers
方法,向应用层获取群组成员信息。
应用开发者必须实现 RongMentionManager
的 IGroupMembersProvider 和 IGroupMemberCallback 接口,SDK 才能获取到 App 的群组成员数据。如果 SDK 无法获取到群组成员,选人界面会显示为空列表。
Java
public interface IGroupMembersProvider {
void getGroupMembers(String groupId, IGroupMemberCallback callback);
}
public interface IGroupMemberCallback {
void onGetGroupMembersResult(List<UserInfo> members);
}
设置群组成员提供者
在 init 之后调用 IMCenter
的 setGroupMembersProvider 方法设置群组成员信息提供者。SDK 所需要的群组成员数据必须由应用开发者主动从应用层(例如 App 服务端)获取。
在 IMKit UI 需要展示群成员列表时,SDK 会触发 getGroupMembers
回调并提供群组 ID。您可以在方法中根据群组 ID 获取群组内用户 ID,再根据用户 ID 从应用层查询用户信息,然后通过 IGroupMemberCallback 将 UserInfo 列表提供给 SDK。
如果 App 实现了群成员用户信息提供者,可用于获取群成员昵称。详见群成员用户信息。
Java
RongIM.getInstance().setGroupMembersProvider(new RongMentionManager.IGroupMembersProvider() {
@Override
public void getGroupMembers(String groupId, RongMentionManager.IGroupMemberCallback iGroupMemberCallback) {
//groupId 是群组id 可以根据群组 ID 获取群组内用户 ID,根据 ID 获取用户信息并返回
//代码如下
List<UserInfo> list=new ArrayList();
UserInfo userInfo=new UserInfo("userid1","小花22", Uri.parse(""));
...
list.add(userInfo);
list.add...
iGroupMemberCallback.onGetGroupMembersResult(list); // 调用 callback 的 onGetGroupMembersResult 回传群组信息
}
});