群成员管理
本文档旨在指导开发者如何使用融云即时通讯 iOS IMLib SDK 实现设置或查询群组成员资料,添加或删除群管理员等功能。
此功能在 5.12.0 版本开始支持。
开通服务
使用此功能前,您须在控制台开通信息托管服务。
群成员
可以查询指定群的群成员,也可以设置群成员信息。
分页获取群成员信息
您可以使用 getGroupMembersByRole
按群成员角色分页获取群成员信息。
此接口成功回调中的 result
会返回满足查询条件的成员总数。
role 参数介绍
枚举值 | 描述 |
---|---|
RCGroupMemberRoleUndef | 未定义角色(使用此枚举查询代表查询全部类型群成员) |
RCGroupMemberRoleNormal | 普通群成员 |
RCGroupMemberRoleManager | 管理员 |
RCGroupMemberRoleOwner | 群主 |
option 参数介绍
参数 | 类型 | 描述 |
---|---|---|
pageToken | NSString | 分页标识, 首次拉取时, 可以传 nil 或 @"",若回调成功后返回 result (类型RCPagingQueryResult) 的 pageToken 如果不为 @"" ,则可以传入该值再次拉取,直至 pageToken 返回为 @"" ,表示全部拉取完成。 |
count | NSInteger | 每页条数,一页最大不超过 100 条 |
order | BOOL | 默认NO 按加入群组时间倒序, YES 为正序 |
代码示例
- (void)getGroupMembersByRole:(NSString *)pageToken {
// 群组 ID
NSString *groupId = @"groupId";
// 要获取群成员的角色,示例为获取所有角色的成员
RCGroupMemberRole role = RCGroupMemberRoleUndef;
// 查询选项
RCPagingQueryOption *option = [[RCPagingQueryOption alloc] init];
// 分页标识, 首页传 nil
option.pageToken = pageToken;
// 每页条数
option.count = 20;
// 默认NO 按加入群组时间倒序, YES 为正序
option.order = NO;
[[RCCoreClient sharedCoreClient] getGroupMembersByRole:groupId
role:role
option:option
success:^(RCPagingQueryResult<RCGroupMemberInfo *> * _Nonnull result) {
// 获取成功
if (result.pageToken.length > 0) {
// 继续获取下一页数据
[self getGroupMembersByRole:result.pageToken];
} else {
// 获取完成,没有更多数据
}
} error:^(RCErrorCode errorCode) {
// 获取失败
}];
}
获取群成员信息
您可以使用 getGroupMembers
获取指定群指定用户的群成员信息。
单次调用最多支持获取 100 个成员的信息。
若当前用户未加入指定群组,则无法获取群成员信息。
代码示例
// 群组 ID
NSString *groupId = @"groupId";
// 指定用户的 userId
NSArray *userIds = @[@"user1", @"user2"];
// 获取群组指定成员的信息
[[RCCoreClient sharedCoreClient] getGroupMembers:groupId
userIds:userIds
success:^(NSArray<RCGroupMemberInfo *> * _Nonnull groupMembers) {
// 获取成功
} error:^(RCErrorCode errorCode) {
// 获取失败
}];
根据群成员昵称分页获取群成员信息
您可以使用 searchGroupMembers
分页搜索本地群组中指定群的群成员信息。
搜索时优先匹配群成员昵称 nickname
,再匹配群成员用户名 name
。只要其中一个字段匹配成功,即返回搜索结果。
此接口成功回调中的 result
会返回满足查询条件的成员总数。
option 参数介绍
参数 | 类型 | 描述 |
---|---|---|
pageToken | NSString | 分页标识, 首次拉取时, 可以传 nil 或 @"",若回调成功后返回 result (类型RCPagingQueryResult) 的 pageToken 如果不为 @"" ,则可以传入该值再次拉取,直至 pageToken 返回为 @"" ,表示全部拉取完成。 |
count | NSInteger | 每页条数,一页最大不超过 200 条 |
order | BOOL | 按加入群组时间排序(默认为 NO 倒序, YES 为正序) |
代码示例
- (void)searchGroupMembers:(NSString *)pageToken {
// 群组 ID
NSString *groupId = @"groupId";
// 群成员昵称
NSString *name = @"";
// 要获取群成员的角色,示例为获取所有角色的成员
RCGroupMemberRole role = RCGroupMemberRoleUndef;
// 查询选项
RCPagingQueryOption *option = [[RCPagingQueryOption alloc] init];
// 分页标识, 首页传 nil
option.pageToken = pageToken;
// 每页条数
option.count = 20;
// 默认NO 按加入群组时间倒序, YES 为正序
option.order = NO;
// 根据昵称搜索群成员
[[RCCoreClient sharedCoreClient] searchGroupMembers:groupId
name:name
option:option
success:^(RCPagingQueryResult<RCGroupMemberInfo *> * _Nonnull result) {
// 搜索成功
if (result.pageToken.length > 0) {
// 继续 搜索下一页数据
[self getGroupMembersByRole:result.pageToken];
} else {
// 搜索完成,没有更多数据
}
} error:^(RCErrorCode errorCode) {
// 搜索失败
}];
}
设置群成员信息
您可以使用 setGroupMemberInfo
设置指定群的群成员信息。
群成员资料更新权限 memberInfoEditPermission,决定是否可以修改群成员信息。如果没有权限设置,调用将会返回错误码。
接口调用成功后,群内所有人会收到群成员信息变更事件 onGroupMemberInfoChanged
回调。
参数介绍
参数 | 类型 | 描述 |
---|---|---|
groupId | NSString | 群 Id |
userId | NSString | 群成员用户 Id |
nickname | NSString | 群成员昵称,长度不超过 64 个字符,传 nil 或 @"" 为清除昵称操作 |
extra | NSString | 群成员附加信息,长度不超过 128 个字符,传 nil 或 @"" 为清除附加信息操作 |
代码示例
// 群Id
NSString *groupId = @"groupId";
// 群成员用户Id
NSString *userId = @"user1";
// 群成员昵称
NSString *nickname = @"nickname";
// 群成员附加信息,非必填
NSString *extra = @"群成员附加信息";
[[RCCoreClient sharedCoreClient] setGroupMemberInfo:groupId
userId:userId
nickname:nickname
extra:extra
success:^{
// 设置成功
} error:^(RCErrorCode errorCode) {
// 设置失败
}];
群管理员
可以添加或者移除群管理员。
添加群管理员
您可以使用 addGroupManagers
添加群管理员。
接口调用成功后,群内所有人会收到群组操作事件 onGroupOperation
回调,操作类型为 RCGroupOperationAddManager
。
- 只有群主才可以添加管理员。
- 要设置的成员必须在此群内,且群主不能被设置为管理员。
- 一个群组的管理员数量上限为 10 个。
代码示例
// 群Id
NSString *groupId = @"groupId";
// 要设置为管理员的用户 ID
NSArray *userIds = @[@"user1", @"user2"];
// 添加群管理员
[[RCCoreClient sharedCoreClient] addGroupManagers:groupId userIds:userIds success:^{
// 设置成功
} error:^(RCErrorCode errorCode) {
// 设置失败
}];
移除群管理员
您可以使用 removeGroupManagers
移除群管理员。
单次调用最多支持移除 10 个管理员。
接口调用成功后,群内所有人会收到群组操作事件 onGroupOperation
回调,操作类型为 RCGroupOperationRemoveManager
。
- 只有群主才可以移除管理员。
代码示例
// 群Id
NSString *groupId = @"groupId";
// 要移除管理员的用户 ID
NSArray *userIds = @[@"user1", @"user2"];
// 添加群管理员
[[RCCoreClient sharedCoreClient] removeGroupManagers:groupId userIds:userIds success:^{
// 移除成功
} error:^(RCErrorCode errorCode) {
// 移除失败
}];
特别关注群成员
可以添加、移除或者查询群特别关注成员。
功能介绍
- 特别关注群成员数量上限为 200 个。
- 特别关注用户在该群发送的消息不受会话免打扰的设置影 响,可正常发送通知提醒。
- 针对特别关注用户发送的消息,推送优先级说明如下:
- 应用级别免打扰状态为不发推送 > 消息体中标识该消息为静音消息 > 发送消息用户为特别关注用户 > 会话免打扰设置
- 免打扰相关说明详见 免打扰功能概述
- 特别关注群成员设置或移除成功后,该用户登录的其他终端会收到好友信息变更多端事件回调 onGroupFollowsChangedSync。
添加特别关注群成员
您可以使用 addGroupFollows
添加特别关注群成员。
单次调用最多支持关注 100 个群成员。
代码示例
// 群Id
NSString *groupId = @"groupId";
// 要关注的用户 ID
NSArray *userIds = @[@"user1", @"user2"];
// 添加特别关注群成员
[[RCCoreClient sharedCoreClient] addGroupFollows:groupId userIds:userIds success:^{
} error:^(RCErrorCode errorCode) {
}];
移除特别关注群成员
您可以使用 removeGroupFollows
移除特别关注群成员。
该接口支持批量移除,您可以一次传入多个 userID
移除多个特别关注群成员,最多不超过100个。
代码示例
// 群Id
NSString *groupId = @"groupId";
// 要移除关注的用户 ID
NSArray *userIds = @[@"user1", @"user2"];
// 移除特别关注群成员
[[RCCoreClient sharedCoreClient] removeGroupFollows:groupId userIds:userIds success:^{
// 操作成功
} error:^(RCErrorCode errorCode) {
// 操作失败
}];
查询特别关注群成员
您可以使用 getGroupFollows
查询特别关注群成员。
代码示例
// 群Id
NSString *groupId = @"groupId";
// 获取特别关注群成员
[[RCCoreClient sharedCoreClient] getGroupFollows:groupId
success:^(NSArray<RCFollowInfo *> * _Nonnull followInfos) {
// 操作成功
} error:^(RCErrorCode errorCode) {
// 操作失败
}];