跳到主要内容

群组成员列表

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

提示

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

了解群组成员提供者接口

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

let userDataProvider: UserDataProvider = {

fetchUserInfo(userId: string): Promise<UserInfoModel> {
// 用户信息
return new Promise((resolve: Function) => {
let userInfo = new UserInfoModel(userId, "用户名称", "用户头像")
resolve(userInfo);
});
},

fetchGroupInfo(groupId: string): Promise<GroupInfoModel> {
// 群信息
return new Promise((resolve: Function) => {
let info = new GroupInfoModel(groupId, "群组名称", "群组头像")
resolve(info);
});
},

fetchGroupMemberInfo(groupId: string, userId: string): Promise<GroupMemberInfoModel> {
// 群成员信息
return new Promise((resolve: Function) => {
let info = new GroupMemberInfoModel(groupId, userId, "群成员名称", "群成员头像")
resolve(info);
});
},

fetchGroupMemberInfos(groupId: string): Promise<Array<GroupMemberInfoModel>> {
// 群成员列表信息
// App 拿到群组所有成员信息后通过 Promise 返给 IMKit,App 可以从数据库或者 APPServer 获取信息
return new Promise((resolve: Function) => {
let array = new Array<GroupMemberInfoModel>();
for (let i = 0; i < 10; i++) {
let userId = "userId" + i;
let info = new GroupMemberInfoModel(groupId, userId, "群成员名称", "群成员头像")
array.push(info);
}
resolve(array);
});
}
}

设置群组成员提供者

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

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

// 设置用户信息提供者
RongIM.getInstance().userDataService().setUserDataProvider(userDataProvider);

获取群成员用户信息列表

App 可以主动调用 UserDataServicegetGroupMemberInfos 方法获取群成员用户信息。SDK 的行为如下:

  1. 首先尝试从本地缓存获取应用层提供的数据。
  2. 如果本地没有相关信息的数据,SDK 会触发 GroupUserInfoProviderfetchGroupMemberInfos 回调方法。如果您的 App 应用层已在该回调中提供数据,则 SDK 可成功获取群成员用户信息列表 GroupMemberInfoModel
RongIM.getInstance().userDataService().getGroupMemberInfos("groupId")
.then((memberInfos: GroupMemberInfoModel[] | undefined) => {
// 群成员用户信息列表
})
输入参数类型说明
groupIdstring群组 ID