跳到主要内容

群查询

本文档旨在指导开发者如何使用融云即时通讯 IMLib SDK 实现获取本人已加入的群组、获取指定群组资料等功能。

提示

此功能在 5.12.0 版本开始支持。

开通服务

使用此功能前,您须在控制台开通信息托管服务。

群查询

获取群组资料

您可以调用 getGroupsInfo 方法获取群组资料。

  • 该方法优先本地查找,当用户不在群组中时,本地不存在或者本地群组信息缓存超过 10 分钟的才会从服务端拉取最新的群组信息。
  • 单次调用最多支持获取 20 个群组资料,每秒钟最多查询 5 次。

接口原型

objc
- (void)getGroupsInfo:(NSArray<NSString *> *)groupIds
success:(void (^)(NSArray<RCGroupInfo *> *groupInfos))successBlock
error:(void (^)(RCErrorCode errorCode))errorBlock;

参数说明

参数类型描述
groupIdsNSArray需要查询的群组 targetId 列表,单次调用最多支持获取 20 个群组资料。
successBlockBlock查询成功回调,返回对应的群组信息 RCGroupInfo 数组。
errorBlockBlock查询失败回调

示例代码

objc
[[RCCoreClient sharedCoreClient] getGroupsInfo:@[@"groupId1", @"groupId2"] 
success:^(NSArray<RCGroupInfo *> * _Nonnull groupInfos) {
// 获取成功
}
error:^(RCErrorCode errorCode) {
// 获取失败
}
];

获取指定已加入群组的资料

您可以使用 getJoinedGroups 根据当前用户已加入的群组 ID 获取群组资料。
该接口支持批量获取,您可以一次传入多个 groupId 获取多个群组资料,最多不超过 20 个。

接口原型

objc
- (void)getJoinedGroups:(NSArray<NSString *> *)groupIds
success:(void (^)(NSArray<RCGroupInfo *> *groupInfos))successBlock
error:(void (^)(RCErrorCode errorCode))errorBlock;

参数说明

参数类型描述
groupIdsNSArray需要查询的群组 targetId 列表,单次调用最多支持获取 20 个群组资料。
successBlockBlock查询成功回调,返回对应的群组信息 RCGroupInfo 数组。
errorBlockBlock查询失败回调。

示例代码

objc
// 已加入的群组 ID
NSArray *groupIds = @[@"groupId1", @"groupId2"];

// 获取已加入的群组
[[RCCoreClient sharedCoreClient] getJoinedGroups:groupIds success:^(NSArray<RCGroupInfo *> * _Nonnull groupInfos) {
// 获取成功
} error:^(RCErrorCode errorCode) {
// 获取失败
}];

按角色获取已加入群组的资料

您可以使用 getJoinedGroupsByRole 按群成员角色分页获取已加入的群组。
此接口成功回调中的 result 会返回满足查询条件的群组总数。

接口原型

objc
- (void)getJoinedGroupsByRole:(RCGroupMemberRole)role
option:(RCPagingQueryOption *)option
success:(void (^)(RCPagingQueryResult<RCGroupInfo *> *result))successBlock
error:(void (^)(RCErrorCode errorCode))errorBlock;

参数说明

参数类型描述
roleRCGroupMemberRole群成员角色。
optionRCPagingQueryOption查询选项,包含 页面标识(非必填,不填返回第一页数据)、每页条数(最大不超过 100 条)、是否正序查询(默认倒序)。
successBlockBlock查询成功回调,返回对应的查询数据的相关信息 RCPagingQueryResult 数组。
errorBlockBlock查询失败回调。

类型: RCGroupMemberRole

枚举值群成员角色
RCGroupMemberRoleUndef未定义角色(使用此枚举查询代表查询全部类型群成员)
RCGroupMemberRoleNormal普通群成员
RCGroupMemberRoleManager管理员
RCGroupMemberRoleOwner群主

类型: RCPagingQueryOption

参数类型描述
pageTokenNSString分页标识, 首次拉取时, 可以传 nil 或 @"",若回调成功后返回 result (类型RCPagingQueryResult) 的 pageToken 如果不为 @"",则可以传入该值再次拉取,直至 pageToken 返回为 @"",表示全部拉取完成。
countNSInteger每页条数,一页最大不超过 200 条
orderBOOL按加入群组时间排序(默认为 NO 倒序, YES 为正序)

示例代码

objc
- (void)getJoinedGroupsByRole:(NSString *)pageToken {
// 指定获取的角色,示例指定为所有角色
RCGroupMemberRole role = RCGroupMemberRoleUndef;

// 查询选项
RCPagingQueryOption *option = [[RCPagingQueryOption alloc] init];
// 分页标识, 首页传 nil
option.pageToken = pageToken;
// 每页条数
option.count = 20;
// 默认NO 按加入群组时间倒序, YES 为正序
option.order = NO;

// 获取指定角色所在的群
[[RCCoreClient sharedCoreClient] getJoinedGroupsByRole:role option:option
success:^(RCPagingQueryResult<RCGroupInfo *> * _Nonnull result) {
// 查询成功
if (result.pageToken.length > 0) {
// 继续获取下一页数据
[self getJoinedGroupsByRole:result.pageToken];
} else {
// 获取完成,没有更多数据
}
} error:^(RCErrorCode errorCode) {
// 获取失败
}];
}

按群名称搜索已加入群组的资料

您可以使用 searchJoinedGroups 根据群名称搜索已加入的群组。
此接口成功回调中的 result 会返回满足查询条件的群组总数。

接口原型

objc
- (void)searchJoinedGroups:(NSString *)groupName
option:(RCPagingQueryOption *)option
success:(void (^)(RCPagingQueryResult<RCGroupInfo *> *result))successBlock
error:(void (^)(RCErrorCode errorCode))errorBlock;

参数说明

参数类型描述
groupNameNSString群名称,不能为空最长不超过 64 个字符。
optionRCPagingQueryOption查询选项,包含页面标识(非必填,不填返回第一页数据)、每页条数(最大不超过 100 条)、是否正序查询(默认倒序)。
successBlockBlock查询成功回调,返回对应的查询数据的相关信息 RCPagingQueryResult 数组。
errorBlockBlock查询失败回调。

类型: RCPagingQueryOption

参数类型描述
pageTokenNSString分页标识, 首次拉取时, 可以传 nil 或 @"",若回调成功后返回 result (类型RCPagingQueryResult) 的 pageToken 如果不为 @"",则可以传入该值再次拉取,直至 pageToken 返回为 @"",表示全部拉取完成。
countNSInteger每页条数,一页最大不超过 200 条
orderBOOL按加入群组时间排序(默认为 NO 倒序, YES 为正序)

示例代码

objc
- (void)searchJoinedGroups:(NSString *)pageToken {
// 要搜索的群名称
NSString *groupName = @"groupName";

// 查询选项
RCPagingQueryOption *option = [[RCPagingQueryOption alloc] init];
// 分页标识, 首页传 nil
option.pageToken = pageToken;
// 每页条数
option.count = 20;
// 默认NO 按加入群组时间倒序, YES 为正序
option.order = NO;

[[RCCoreClient sharedCoreClient] searchJoinedGroups:groupName option:option
success:^(RCPagingQueryResult<RCGroupInfo *> * _Nonnull result) {
// 搜索成功
if (result.pageToken.length > 0) {
// 继续搜索下一页数据
[self searchJoinedGroups:result.pageToken];
} else {
// 搜索完成,没有更多数据
}
} error:^(RCErrorCode errorCode) {
// 搜索失败
}];
}