群成员管理
本文档旨在指导开发者如何使用融云即时通讯 Web IMLib SDK 实现设置或查询群组成员资料,添加或删除群管理员等功能。
提示
此功能从 5.12.0 版本开始支持。
开通服务
使用此功能前,您须在控制台开通信息托管服务。
群成员
可以查询指定群的群成员,也可以设置群成员信息。
群成员资料变更回调
setGroupMemberInfo
设置指定群的群成员信息成功,群内所有人会收到群成员资料变更事件 Events.GROUP_MEMBER_INFO_CHANGED
回调。
监听建议全局注册切仅注册一次,多次调用会通知多次。通知数据为 IGroupMemberInfoChanged 类型。
javascript
RongIMLib.addEventListener(Events.GROUP_MEMBER_INFO_CHANGED, (data) => {
console.log('群成员资料变更回调', data);
});
分页获取群成员信息
您可以使用 getGroupMembersByRole
按群成员角色分页获取群成员信息,成员角色请参考 GroupMemberRole。
提示
分页拉取说明:
- 首次拉取时,
option
的pageToken
无需设置(不传递或设置''
,效果等同)。 - 拉取第二页需要传入首次拉取返回结果 IPagingQueryResult 类型中的
pageToken
。- 如果不为
''
,则可以传入该值再次拉取,直至pageToken
返回为''
,表示全部拉取完成。 - 如果为
''
,表示没有下一页,或已拉取完成,无需在此拉取,如传递''
,拉取将视为拉取首页数据。
- 如果不为
参数名 | 类型 | 必填 | 描述 |
---|---|---|---|
groupId | string | 是 | 群组 ID。 |
role | GroupMemberRole | 是 | 群成员角色,指定只拉取该角色的群成员信息。设置为 GroupMemberRole.UNDEF 不区分角色或位置角色获取所有群成员。 |
option | IPagingQueryOption | 是 | 分页请求参数。 一页最多查询 100 条数据。 |
注意
Web 返回的 IPagingQueryResult 结构中暂不支持返回 totalCount。
javascript
const groupId = 'group001';
// 设置为 '' 代表移除。字符串长度不超过 64 个字符,如群备注名已存在则做替换处理,以最后一次设置为准
const role = RongIMLib.GroupMemberRole.UNDEF;
const option = {
// 必填,范围 1 ~ 100
count: 50,
}
const res = await RongIMLib.getGroupMembersByRole(groupId, role, option);
console.info('分页获取群成员信息', res);
// 拉取下一页
if (res && res.pageToken) {
const nextRes = await RongIMLib.getGroupMembersByRole(groupId, role, {
...option,
pageToken: res.pageToken
});
console.info('分页获取群成员信息,拉取下一页', nextRes);
}
获取群成员信息
您可以使用 getGroupMembers
获取指定群指定用户的群成员信息 。
提示
-
当前用户未在群组中不支持获取群成员信息。
-
userIds 获取多个群成员信息,最多不超过 100 个。
-
仅支持查询群组内成员信息,如输入 userIds 数组中包含未在群组的 userId 过滤不做返回。
参数名 | 类型 | 必填 | 描述 |
---|---|---|---|
groupId | string | 是 | 群组 ID。 |
userIds | string[] | 是 | 用户 ID 数组,最多不超过 100 个。 |
javascript
const groupId = 'group001';
// user01 如不在 group001 群组则返回 []
const userIds = ['user01'];
const res = await RongIMLib.getGroupMembers(groupId, userIds);
console.info('获取群成员信息', res);
根据昵称搜索群成员信息(仅 Electron)
注 意
仅支持 Electron 平台,Web 暂不支持。
您可以使用 searchGroupMembers
分页搜索本地群组中指定群的群成员信息。
搜索时优先匹配群成员昵称 nickname
,再匹配群成员用户名 name
。只要其中一个字段匹配成功,即返回搜索结果。
提示
分页拉取说明:
- 首次拉取时,
option
的pageToken
无需设置(不传递或设置''
,效果等同)。 - 拉取第二页需要传入首次拉取返回结果 IPagingQueryResult 类型中的
pageToken
。- 如果不为
''
,则可以传入该值再次拉取,直至pageToken
返回为''
,表示全部拉取完成。 - 如果为
''
,表示没有下一页,或已拉取完成,无需在此拉取,如传递''
,拉取将视为拉取首页数据。
- 如果不为
参数名 | 类型 | 必填 | 描述 |
---|---|---|---|
groupId | string | 是 | 群组 ID。 |
name | string | 是 | 搜索名称,支持模糊搜索查询,昵称为空时搜索用户名,不能为空,不能为纯空格,最长不超过 64 个字符。 |
option | IPagingQueryOption | 是 | 分页请求参数。 一页最多查询 100 条数据。 |
javascript
const groupId = 'group001';
// 不能为空,不可以传递纯空格,最长不超过 64 个字符
// 支持模糊搜索查询,昵称为空时搜索用户名
const name = 'name';
const option = {
// 必填,范围 1 ~ 100
count: 50,
}
const res = await RongIMLib.searchGroupMembers(groupId, name, option);
console.info('根据群成员昵称分页获取群成员信息', res);
// 拉取下一页
if (res && res.pageToken) {
const nextRes = await RongIMLib.searchGroupMembers(groupId, name, {
...option,
pageToken: res.pageToken
});
console.info('根据群成员昵称分页获取群成员信息,拉取下一页', nextRes);
}