跳到主要内容

群组页面

提示

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

群组相关页面包含选择联系人、创建群组、群组设置、群成员列表等。

开通服务

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

选择/添加联系人页面

选择或者添加联系人页面类是RCSelectUserViewController

选择或者添加联系人页面默认显示的是信息托管服务上当前用户好友列表。

初始化

调用 RCSelectUserViewController 类的初始化方法构建好友列表页面。 注意,您需要创建一个 RCSelectUserViewModel 对象, 作为RCSelectUserViewController 的业务逻辑处理模块。

参数说明

RCSelectUserViewController 说明:

参数类型说明
viewModelRCSelectUserViewModelRCSelectUserViewController 的业务逻辑处理模块。 获取联系人列表并处理展示逻辑。

RCSelectUserViewModel 说明:

参数类型说明
typeRCSelectUserType选择联系人类型,包含创建群组选人 RCSelectUserTypeCreateGroup 和 群组加人选人 RCSelectUserTypeInviteJoinGroup
groupIdNSString群组id,非必传。当群组加人选人 RCSelectUserTypeInviteJoinGroup时必传

示例代码

Objective C
// 群组 id,非必传。当群组加人选人 `RCSelectUserTypeInviteJoinGroup`时必传
RCSelectUserViewModel *vm = [RCSelectUserViewModel viewModelWithType:RCSelectUserTypeCreateGroup groupId:nil];
RCSelectUserViewController *vc = [[RCSelectUserViewController alloc] initWithViewModel:vm];
[self.navigationController pushViewController:vc animated:YES];

配置单次可选择的最大人数

IMKit 可以通过 RCSelectUserViewModelmaxSelectCount 属性配置单次可选择的最大人数。默认能选择的最大人数为 30,配置值需大于 0,小于等于 100。

示例代码

Objective C
RCSelectUserViewModel *vm = [RCSelectUserViewModel viewModelWithType:RCSelectUserTypeCreateGroup groupId:nil];
// 默认能选择的最大人数为 30
vm.maxSelectCount = 50;
RCSelectUserViewController *vc = [[RCSelectUserViewController alloc] initWithViewModel:vm];
[self.navigationController pushViewController:vc animated:YES];

拦截选择完成回调

通过 RCSelectUserViewModel 的代理 RCSelectUserViewModelDelegate 可以拦截选择完成回调。

  1. 添加代理:
Objective C
RCSelectUserViewModel *vm = [RCSelectUserViewModel viewModelWithType:RCSelectUserTypeCreateGroup groupId:nil];
vm.delegate = self;
RCSelectUserViewController *vc = [[RCSelectUserViewController alloc] initWithViewModel:vm];
[self.navigationController pushViewController:vc animated:YES];
  1. 实现拦截选择完成的代理方法:
Objective C
- (BOOL)selectUserDidSelectComplete:(RCSelectUserViewModel *)viewModel
selectUserIds:(NSMutableArray <NSString *>*)selectUserIds
viewController:(UIViewController*)viewController {

return YES;//YES : SDK不再处理, NO: SDK处理
}

创建群组页面

创建群组页面的类是 RCGroupCreateViewController

初始化

调用 RCGroupCreateViewController 类的初始化方法构建好友列表页面。 注意,您需要创建一个 RCGroupCreateViewModel 对象, 作为RCGroupCreateViewController 的业务逻辑处理模块。

参数说明

RCGroupCreateViewController 说明:

参数类型说明
viewModelRCGroupCreateViewModelRCGroupCreateViewController 的业务逻辑处理模块。 创建群组逻辑处理。

RCGroupCreateViewModel 说明:

参数类型说明
inviteeUserIdsNSArray <NSString *>*当前选择的用户列表,不包含当前用户
delegateRCGroupCreateViewModelDelegate代理

示例代码

Objective C
NSArray *selectUserIds = @[@"userId1", @"userId2"];
RCGroupCreateViewModel *viewModel = [RCGroupCreateViewModel viewModelWithInviteeUserIds:self.selectUserIds];
viewModel.delegate = self;
RCGroupCreateViewController *vc = [[RCGroupCreateViewController alloc] initWithViewModel:viewModel];
[self.navigationController pushViewController:vc animated:YES];
提示

群组 Id 是由您提供的,所以必须实现 RCGroupCreateViewModel 代理 RCGroupCreateViewModelDelegategenerateGroupId 方法给 IMKit SDK 提供群组 Id。

示例代码

Objective C
- (NSString *)generateGroupId {
return @"groupId";
}

自定义头像点击事件

IMKit 自带的创建群组页面只有默认群头像,开发者如果需要创建时传入群头像,需要拦截头像点击事件处理,实现 RCGroupCreateViewModel 代理 RCGroupCreateViewModelDelegate 的头像点击方法:

示例代码

Objective C
- (void)groupPortraitDidClick:(UIViewController *)inViewController
resultBlock:(void(^)(NSString *portraitUrl))resultBlock {
//跳转选择头像,将选择结果通过resultBlock 回调给 SDK
NSString *portraitRemoteUrl = @"上传远端后的头像 url";
resultBlock(portraitRemoteUrl);
}

群组设置页面

图中消息免打扰和会话置顶 cell 内置页面没有,是 demo 通过自定义 cell 方式实现的。

初始化

调用 RCProfileViewController 类的初始化方法构建好友列表页面。 注意,您需要创建一个 RCGroupProfileViewModel 对象, 作为RCProfileViewController 的业务逻辑处理模块。

群组设置页和用户资料页使用的是相同的页面 RCProfileViewController,区别是初始化传入的 ViewModel 不同。

参数说明

RCProfileViewController 说明:

参数类型说明
viewModelRCProfileViewModelRCProfileViewController 的业务逻辑处理模块。 群信息获取展示逻辑使用RCProfileViewModel 子类 RCGroupProfileViewModel 初始化。

RCGroupProfileViewModel 说明:

参数类型说明
groupIdNSString群组 Id

示例代码

Objective C
RCGroupProfileViewModel *viewModel = [RCGroupProfileViewModel viewModelWithGroupId:self.targetId];
RCProfileViewController *vc = [[RCProfileViewController alloc] initWithViewModel:viewModel];
[self.navigationController pushViewController:vc
animated:YES];

自定义标题

用户资料页 RCProfileViewController 使用了系统的导航栏,标题默认是群名称(群成员人数)组合,可以在初始化后修改。

示例代码

Objective C
RCProfileViewController *vc = [[RCProfileViewController alloc] initWithViewModel:viewModel];
vc.title = @"custom title";

配置群组设置页展示的群成员数

IMKit 可以通过 RCGroupProfileViewModeldisplayMaxMemberCount 属性配置群组设置页展示的群成员数。默认能选择的最大人数为 30,配置值需要不小于 5 个,不大于 50 个。

示例代码

Objective C
RCGroupProfileViewModel *viewModel = [RCGroupProfileViewModel viewModelWithGroupId:self.targetId];
viewModel.delegate = self;
/// 最多显示群成员个数,默认为 30, 设置 displayMaxMemberCount 需要不小于 5 个,不大于 50
viewModel.displayMaxMemberCount = 20;
RCProfileViewController *vc = [[RCProfileViewController alloc] initWithViewModel:viewModel];

自定义群组设置页面 cell

RCGroupProfileViewModelRCMyProfileViewModel继承同一个父类 RCProfileViewModel。 参考当前用户资料页自定义 cell 逻辑,注意在判断是否是群组设置页时 RCMyProfileViewModel 要替换成 RCGroupProfileViewModel

群成员列表页面

初始化

群设置页面点击群成员 cell, 默认会直接跳转到群成员列表页面。 如果需要自定义群成员列表页面,或者从其他地方跳转到群成员页面需要初始化群成员列表页面,需要调用 RCGroupMemberListViewController 类的初始化方法构建好友列表页面。 注意,您需要创建一个 RCGroupMemberListViewModel 对象, 作为RCGroupMemberListViewController 的业务逻辑处理模块。

参数说明

RCGroupMemberListViewController 说明:

参数类型说明
viewModelRCGroupMemberListViewModelRCGroupMemberListViewController 的业务逻辑处理模块。 群成员获取展示逻辑处理。

RCGroupMemberListViewModel 说明:

参数类型说明
groupIdNSString群 Id

示例代码

Objective C
RCGroupMemberListViewModel *viewModel = [RCGroupMemberListViewModel viewModelWithGroupId:self.groupId];
RCGroupMemberListViewController *membersVC = [[RCGroupMemberListViewController alloc] initWithViewModel:viewModel];
membersVC.title = @"群成员";
[self.navigationController pushViewController:membersVC animated:YES];

配置每页加载群成员数

在初始化 RCGroupMemberListViewController 页面时设置 RCGroupMemberListViewModel 属性 pageCount 可以配置每页加载群成员数,默认 50 人,配置值需大于 0,小于等于 100:

Objective C
RCGroupMemberListViewModel *viewModel = [RCGroupMemberListViewModel viewModelWithGroupId:self.groupId];
/// 每页加载成员数, 默认 50,0 < pageCount <= 100
viewModel.pageCount = 60

自定义群成员点击事件

默认点击群成员跳转到内置用户资料页,开发者可以自定义拦截处理

  1. 在初始化 RCGroupMemberListViewController 页面时设置 RCGroupMemberListViewModel 代理 delegate:
Objective C
RCGroupMemberListViewModel *viewModel = [RCGroupMemberListViewModel viewModelWithGroupId:group.groupId];
/// 设置代理
viewModel.delegate = self;
  1. 实现自定义群成员点击事件代理方法:
Objective C
- (BOOL)groupMemberList:(RCGroupMemberListViewModel *)viewModel
viewController:(UIViewController*)viewController
tableView:(UITableView *)tableView
didSelectRow:(NSIndexPath *)indexPath
cellViewModel:(RCGroupMemberCellViewModel *)cellViewModel {

return YES;///YES : SDK 不再处理, NO: SDK 内部处理
}

移除群成员页面

初始化

默认 IMKit 群设置页已经实现了跳转移除群成员页面。 如果需要自定义移除群成员页面,或者从其他地方跳转到该页面自行初始化,需要调用 RCRemoveGroupMembersViewController 类的初始化方法构建好友列表页面。 注意,您需要创建一个 RCRemoveGroupMembersViewModel 对象, 作为RCRemoveGroupMembersViewController 的业务逻辑处理模块。

参数说明

RCRemoveGroupMembersViewController 说明:

参数类型说明
viewModelRCRemoveGroupMembersViewModelRCRemoveGroupMembersViewController 的业务逻辑处理模块。 群成员获取展示逻辑处理。

RCRemoveGroupMembersViewModel 说明:

参数类型说明
groupIdNSString群 Id

示例代码

Objective C
RCRemoveGroupMembersViewModel *viewModel = [RCRemoveGroupMembersViewModel viewModelWithGroupId:group.groupId];
RCRemoveGroupMembersViewController *vc = [[RCRemoveGroupMembersViewController alloc] initWithViewModel:viewModel];
[self.navigationController pushViewController:vc animated:YES];

配置单次可选移除群成员数

在初始化 RCRemoveGroupMembersViewController 页面时设置 RCRemoveGroupMembersViewModel 属性 maxSelectCount 可以配置单次可选移除群成员数,默认 30 人,配置值需大于 0,小于等于 100:

示例代码

Objective C
RCRemoveGroupMembersViewModel *viewModel = [RCRemoveGroupMembersViewModel viewModelWithGroupId:group.groupId];
/// 单次最多可选择数量,默认 30, 0 < maxSelectCount <= 100
viewModel.maxSelectCount = 60

自定义群成员点击事件

默认点击群成员跳转到内置用户资料页,您可以自定义拦截处理。

  1. 在初始化 RCRemoveGroupMembersViewController 页面时设置 RCRemoveGroupMembersViewModel 代理 delegate:
Objective C
RCRemoveGroupMembersViewModel *viewModel = [RCRemoveGroupMembersViewModel viewModelWithGroupId:group.groupId];
/// 设置代理
viewModel.delegate = self;
  1. 实现群成员点击事件代理方法:
Objective C
- (BOOL)groupRemoveMembers:(RCRemoveGroupMembersViewModel *)viewModel
viewController:(UIViewController*)viewController
tableView:(UITableView *)tableView
didSelectRow:(NSIndexPath *)indexPath
cellViewModel:(RCRemoveGroupMemberCellViewModel *)cellViewModel {

return YES;///YES : SDK 不再处理, NO: SDK 内部处理
}

拦截选择完成回调

您可以自定义拦截选择成员完成的回调事件:

  1. 在初始化 RCRemoveGroupMembersViewController 页面时设置 RCRemoveGroupMembersViewModel 代理 delegate:
Objective C
RCRemoveGroupMembersViewModel *viewModel = [RCRemoveGroupMembersViewModel viewModelWithGroupId:group.groupId];
/// 设置代理
viewModel.delegate = self;
  1. 实现拦截选择完成回调代理方法:
Objective C
- (BOOL)groupRemoveMembersDidSelectComplete:(RCRemoveGroupMembersViewModel *)viewModel
selectUserIds:(NSMutableArray <NSString *>*)selectUserIds
viewController:(UIViewController*)viewController {

return YES;///YES : SDK 不再处理, NO: SDK 内部处理
}