Skip to main content

Group channel pages

Group channel pages include contact selection, group creation, group settings, and member list management.

Enable the service

The information hosting service is enabled by default and ready for immediate use.

Contact selection page

The contact selection page uses the NCSelectUserViewController class.

This page displays the current user's friend list from the information hosting service by default.

Initialize

Create the friend list page by initializing NCSelectUserViewController. You must provide an NCSelectUserViewModel object as the business logic handler.

Parameters

NCSelectUserViewController parameters:

ParameterTypeDescription
viewModelNCSelectUserViewModelBusiness logic handler for contact list retrieval and display

NCSelectUserViewModel parameters:

ParameterTypeDescription
typeNCSelectUserTypeContact selection type: NCSelectUserTypeCreateGroup for group creation or NCSelectUserTypeInviteJoinGroup for adding members
groupIdNSStringGroup ID (optional for group creation, required when adding members)

Example

Objective C
// Group ID is optional for group creation but required when adding members
NCSelectUserViewModel *vm = [NCSelectUserViewModel viewModelWithType:NCSelectUserTypeCreateGroup groupId:nil];
NCSelectUserViewController *vc = [[NCSelectUserViewController alloc] initWithViewModel:vm];
[self.navigationController pushViewController:vc animated:YES];

Configure maximum selectable contacts

Set the maxSelectCount property of NCSelectUserViewModel to limit selectable contacts per session. Default is 30 (range: 1-100).

Example

Objective C
NCSelectUserViewModel *vm = [NCSelectUserViewModel viewModelWithType:NCSelectUserTypeCreateGroup groupId:nil];
// Default maximum is 30
vm.maxSelectCount = 50;
NCSelectUserViewController *vc = [[NCSelectUserViewController alloc] initWithViewModel:vm];
[self.navigationController pushViewController:vc animated:YES];

Intercept selection completion

Implement NCSelectUserViewModelDelegate to handle selection completion events.

  1. Add delegate:
Objective C
NCSelectUserViewModel *vm = [NCSelectUserViewModel viewModelWithType:NCSelectUserTypeCreateGroup groupId:nil];
vm.delegate = self;
NCSelectUserViewController *vc = [[NCSelectUserViewController alloc] initWithViewModel:vm];
[self.navigationController pushViewController:vc animated:YES];
  1. Implement delegate method:
Objective C
- (BOOL)selectUserDidSelectComplete:(NCSelectUserViewModel *)viewModel
selectUserIds:(NSMutableArray <NSString *>*)selectUserIds
viewController:(UIViewController*)viewController {

return YES;//YES: Handle manually, NO: Let SDK handle
}

Group creation page

The group creation page uses NCGroupCreateViewController.

Initialize

Create the page by initializing NCGroupCreateViewController with an NCGroupCreateViewModel business logic handler.

Parameters

NCGroupCreateViewController parameters:

ParameterTypeDescription
viewModelNCGroupCreateViewModelBusiness logic handler for group creation

NCGroupCreateViewModel parameters:

ParameterTypeDescription
inviteeUserIdsNSArray <NSString *>*Selected user IDs (excluding current user)
delegateNCGroupCreateViewModelDelegateDelegate

Example

Objective C
NSArray *selectUserIds = @[@"userId1", @"userId2"];
NCGroupCreateViewModel *viewModel = [NCGroupCreateViewModel viewModelWithInviteeUserIds:self.selectUserIds];
viewModel.delegate = self;
NCGroupCreateViewController *vc = [[NCGroupCreateViewController alloc] initWithViewModel:viewModel];
[self.navigationController pushViewController:vc animated:YES];
tip

You must implement the generateGroupId method from NCGroupCreateViewModelDelegate to provide group IDs.

Example

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

Customize avatar selection

To support custom group avatars during creation, implement the avatar click handler:

Example

Objective C
- (void)groupPortraitDidClick:(UIViewController *)inViewController
resultBlock:(void(^)(NSString *portraitUrl))resultBlock {
// Handle avatar selection and return URL via resultBlock
NSString *portraitRemoteUrl = @"remote_avatar_url";
resultBlock(portraitRemoteUrl);
}

Group settings page

Note: The do not disturb and pin channel features shown are demo implementations using custom cells.

Initialize

Use NCProfileViewController with an NCGroupProfileViewModel. The same view controller handles both group settings and user profiles.

Parameters

NCProfileViewController parameters:

ParameterTypeDescription
viewModelNCProfileViewModelBusiness logic handler (use NCGroupProfileViewModel subclass for groups)

NCGroupProfileViewModel parameters:

ParameterTypeDescription
groupIdNSStringGroup ID

Example

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

Custom title

The default title combines group name and member count. Modify after initialization:

Example

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

Configure displayed member count

Set displayMaxMemberCount in NCGroupProfileViewModel to control visible members (default: 30, range: 5-50).

Example

Objective C
NCGroupProfileViewModel *viewModel = [NCGroupProfileViewModel viewModelWithGroupId:self.targetId];
viewModel.delegate = self;
/// Default is 30, must be between 5-50
viewModel.displayMaxMemberCount = 20;
NCProfileViewController *vc = [[NCProfileViewController alloc] initWithViewModel:viewModel];

Customize group settings cells

NCGroupProfileViewModel and NCMyProfileViewModel share the same parent class. Refer to user profile cell customization logic, replacing NCMyProfileViewModel with NCGroupProfileViewModel when checking page type.

Group member list page

Initialize

Clicking members in group settings navigates to this page automatically. For custom implementations, initialize NCGroupMemberListViewController with an NCGroupMemberListViewModel.

Parameters

NCGroupMemberListViewController parameters:

ParameterTypeDescription
viewModelNCGroupMemberListViewModelBusiness logic handler for member management

NCGroupMemberListViewModel parameters:

ParameterTypeDescription
groupIdNSStringGroup ID

Example

Objective C
NCGroupMemberListViewModel *viewModel = [NCGroupMemberListViewModel viewModelWithGroupId:self.groupId];
NCGroupMemberListViewController *membersVC = [[NCGroupMemberListViewController alloc] initWithViewModel:viewModel];
membersVC.title = @"Group members";
[self.navigationController pushViewController:membersVC animated:YES];

Configure pagination

Set pageCount in NCGroupMemberListViewModel to control members per page (default: 50, range: 1-100):

Objective C
NCGroupMemberListViewModel *viewModel = [NCGroupMemberListViewModel viewModelWithGroupId:self.groupId];
/// Members per page (default 50, range 1-100)
viewModel.pageCount = 60;

Customize member selection

Override default profile navigation by implementing the delegate:

  1. Set delegate:
Objective C
NCGroupMemberListViewModel *viewModel = [NCGroupMemberListViewModel viewModelWithGroupId:group.groupId];
viewModel.delegate = self;
  1. Implement handler:
Objective C
- (BOOL)groupMemberList:(NCGroupMemberListViewModel *)viewModel
viewController:(UIViewController*)viewController
tableView:(UITableView *)tableView
didSelectRow:(NSIndexPath *)indexPath
cellViewModel:(NCGroupMemberCellViewModel *)cellViewModel {

return YES;///YES: Handle manually, NO: Let SDK handle
}

Member removal page

Initialize

Group settings includes removal by default. For custom implementations, use NCRemoveGroupMembersViewController with NCRemoveGroupMembersViewModel.

Parameters

NCRemoveGroupMembersViewController parameters:

ParameterTypeDescription
viewModelNCRemoveGroupMembersViewModelBusiness logic handler for member removal

NCRemoveGroupMembersViewModel parameters:

ParameterTypeDescription
groupIdNSStringGroup ID

Example

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

Configure maximum removable members

Set maxSelectCount in NCRemoveGroupMembersViewModel (default: 30, range: 1-100):

Example

Objective C
NCRemoveGroupMembersViewModel *viewModel = [NCRemoveGroupMembersViewModel viewModelWithGroupId:group.groupId];
/// Maximum selectable (default 30, range 1-100)
viewModel.maxSelectCount = 60;

Customize member selection

Override default behavior:

  1. Set delegate:
Objective C
NCRemoveGroupMembersViewModel *viewModel = [NCRemoveGroupMembersViewModel viewModelWithGroupId:group.groupId];
viewModel.delegate = self;
  1. Implement handler:
Objective C
- (BOOL)groupRemoveMembers:(NCRemoveGroupMembersViewModel *)viewModel
viewController:(UIViewController*)viewController
tableView:(UITableView *)tableView
didSelectRow:(NSIndexPath *)indexPath
cellViewModel:(NCRemoveGroupMemberCellViewModel *)cellViewModel {

return YES;///YES: Handle manually, NO: Let SDK handle
}

Intercept removal completion

Handle removal events manually:

  1. Set delegate:
Objective C
NCRemoveGroupMembersViewModel *viewModel = [NCRemoveGroupMembersViewModel viewModelWithGroupId:group.groupId];
viewModel.delegate = self;
  1. Implement handler:
Objective C
- (BOOL)groupRemoveMembersDidSelectComplete:(NCRemoveGroupMembersViewModel *)viewModel
selectUserIds:(NSMutableArray <NSString *>*)selectUserIds
viewController:(UIViewController*)viewController {

return YES;///YES: Handle manually, NO: Let SDK handle
}