群组成员列表
本文描述了应用层(App)如何为 IMKit SDK 提供群组成员数据,用于在群聊会话中输入 @符号时弹出的默认选人界面的选人界面。设置完成后,在 IMKit UI 中上需要展示群成员列表时可正常显示群组成员的头像、用户名或群内昵称。
提示
融云服务端不向 SDK 提供用户与群组信息托管服务。因此 SDK 所需要的群组信息必须由应用开发者主动从 App 服务端获取,并提供给 SDK。
了解群组成员提供者接口
SDK 定义了用户信息提供者(UserDataProvider
)。在 IMKit UI 需要展示群成员列表时,会触发 UserDataProvider
的 fetchGroupMemberInfos
方法,向应用层获取群组成员信息列表。
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 之后调用 UserDataService
的 setUserDataProvider
方法设置群组成员信息提供者。SDK 所需要的群组成员数据必须由应用开发者主动从应用层(例如 App 服务端)获取。
应用开发者必须实现 UserDataProvider
的 fetchGroupMemberInfos
接口,SDK 才能获取到 App 的群组成员数据。如果 SDK 无法获取到群组成员列表,选人界面会显示为空列表。
// 设置用户信息提供者
RongIM.getInstance().userDataService().setUserDataProvider(userDataProvider);
获取群成员用户信息列表
App 可以主动调用 UserDataService
的 getGroupMemberInfos
方法获取群成员用户信息。SDK 的行为如下:
- 首先尝试从本地缓存获取应用层提供的数据。
- 如果本地没有相关信息的数据,SDK 会触发
GroupUserInfoProvider
的fetchGroupMemberInfos
回调方法。如果您的 App 应用层已在该回调中提供数据,则 SDK 可成功获取群成员用户信息列表GroupMemberInfoModel
。
RongIM.getInstance().userDataService().getGroupMemberInfos("groupId")
.then((memberInfos: GroupMemberInfoModel[] | undefined) => {
// 群成员用户信息列表
})
输入参数 | 类型 | 说明 |
---|---|---|
groupId | string | 群组 ID |