群组成员列表
本文描述了应用层(App)如何为 IMKit SDK 提供群组成员数据,用于在群聊会话中输入 @符号时弹出的默认选人界面、发起群组音视频通话的选人界面。设置完成后,在 IMKit UI 中上需要展示群成员列表时可正常显示群组成员的头像、用户名或群内昵称。
融云服务端不向 SDK 提供用户与群组信息托管服务。因此 SDK 所需要的群组信息必须由应用开发者主 动从 App 服务端获取,并提供给 SDK。
了解群组成员提供者接口
SDK 在 RongMentionManager 类中定义了群组成员提供者(IGroupMembersProvider)。在 IMKit UI 需要展示群成员列表时,会触发 IGroupMembersProvider
的 getGroupMembers
方法,向应用层获取群组成员信息。
应用开发者必须实现 RongMentionManager
的 IGroupMembersProvider 和 IGroupMemberCallback 接口,SDK 才能获取到 App 的群组成员数据。如果 SDK 无法获取到群组成员,选人界面会显示为空列表。
public interface IGroupMembersProvider {
void getGroupMembers(String groupId, IGroupMemberCallback callback);
}
public interface IGroupMemberCallback {
void onGetGroupMembersResult(List<UserInfo> members);
}
设置群组成员提供者
在 init 之后调用 RongIM
的 setGroupMembersProvider 方法设置群组成员信息提供者。SDK 所需要的群组成员数据必须由应用开发者主动从应用层(例如 App 服务端)获取。
在 IMKit UI 需要展示群成员列表时,SDK 会触发 getGroupMembers
回调并提供群组 ID。您可以在方法中根据群组 ID 获取群组内用户 ID,再根据用户 ID 从应用层查询用户信息,然后通过 IGroupMemberCallback 将 UserInfo 列表提供给 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 回传群组信息
}
});