跳到主要内容

群组成员列表

本文描述了应用层(App)如何为 IMKit SDK 提供群组成员数据,用于在群聊会话中输入 @符号时弹出的默认选人界面、发起群组音视频通话的选人界面。设置完成后,在 IMKit UI 中上需要展示群成员列表时可正常显示群组成员的头像、用户名或群内昵称。

提示

融云服务端不向 SDK 提供用户与群组信息托管服务。因此 SDK 所需要的群组信息必须由应用开发者主动从 App 服务端获取,并提供给 SDK。

了解群组成员提供者接口

SDK 在 RongMentionManager 类中定义了群组成员提供者(IGroupMembersProvider)。在 IMKit UI 需要展示群成员列表时,会触发 IGroupMembersProvidergetGroupMembers 方法,向应用层获取群组成员信息。

应用开发者必须实现 RongMentionManagerIGroupMembersProviderIGroupMemberCallback 接口,SDK 才能获取到 App 的群组成员数据。如果 SDK 无法获取到群组成员,选人界面会显示为空列表。

public interface IGroupMembersProvider {
void getGroupMembers(String groupId, IGroupMemberCallback callback);
}

public interface IGroupMemberCallback {
void onGetGroupMembersResult(List<UserInfo> members);
}

设置群组成员提供者

在 init 之后调用 RongIMsetGroupMembersProvider 方法设置群组成员信息提供者。SDK 所需要的群组成员数据必须由应用开发者主动从应用层(例如 App 服务端)获取。

在 IMKit UI 需要展示群成员列表时,SDK 会触发 getGroupMembers 回调并提供群组 ID。您可以在方法中根据群组 ID 获取群组内用户 ID,再根据用户 ID 从应用层查询用户信息,然后通过 IGroupMemberCallbackUserInfo 列表提供给 SDK。

如果 App 实现了群成员用户信息提供者,可用于获取群成员昵称。详见群成员用户信息

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 回传群组信息
}
});