In UIKit for iOS, you can invite users to a group channel through the SBUInviteUserViewController
class and promote a channel member to an operator using the SBUPromoteMemberViewController
class. The ViewController
uses the SBUUserCell
class to display a list of users who are not already in the channel. The same class is used for both inviting a user and appointing a member to be the operator of a group channel.
Unless you have a specific list of users you selected, all users who are using your chat service is displayed in the user list by default.
Note: If you set the starting point of your chat service to be the channel list, group or open channel, channel settings or member list, you can seamlessly guide your users to the invite users view and the promote members view.
You can start building an invite users view through the SBUInviteUserViewController
class and the promote members view using the SBUPromoteMemberViewController
class. Use either the init(channelUrl:users:)
or init(channel:users:)
initializer to create the instance and display the view as shown below.
Note: If you don't set a value to the
user
parameter, the default value of nil is used instead.
The following items are key elements of SBUInviteUserViewController
and SBUPromoteMemberViewController
that are used to create a functional view.
In the SBUInviteUserViewController
class, SBUInviteUserModule
and its components are used to create and display the invite users view. The module is composed of two components: headerComponent
and listComponent
.
In the SBUPromoteMemberViewController
class, SBUPromoteMemberModule
and its components are used to create and display the promote members view. The module is composed of two components: headerComponent
and listComponent
.
Properties
Invite users | Type | Default value |
---|---|---|
headerComponent | SBUInviteUserModule.Header | SBUModuleSet.inviteUserModule.headerComponent |
listComponent | SBUInviteUserModule.List | SBUModuleSet.inviteUserModule.listComponent |
Promote members | Type | Default value |
---|---|---|
headerComponent | SBUPromoteMemberModule.Header | SBUModuleSet.promoteMemberModule.headerComponent |
listComponent | SBUPromoteMemberModule.List | SBUModuleSet.promoteMemberModule.listComponent |
Each module component is assigned a value from the SBUModuleSet
class and gets added to the view in the setupView()
method of the Sendbird UIKit's view life cycle. Then, the configure
method of each module component is called to set the property values and display the view.
The headerComponent
in the invite users view includes a channel title, a back button that takes the user to the previous view, and a text button that invites the selected users to the channel.
The headerComponent
in the promote members view includes a channel title, a back button that takes the user to the previous view, and a button that adds the selected members to the list of channel operators.
The following table shows the parameters of the configure
method of the headerComponent
.
Parameters
Invite users | Type |
---|---|
delegate | SBUInviteUserModuleHeaderDelegate |
dataSource | SBUInviteUserModuleHeaderDataSource |
theme | SBUUserListTheme |
Promote members | Type |
---|---|
delegate | SBUPromoteMemberModuleHeaderDelegate |
dataSource | SBUPromoteMemberModuleHeaderDataSource |
theme | SBUUserListTheme |
Note: To learn more about the delegate, data source, and the properties of the
headerComponent
for the invite users view, go to this API reference page. For the promote members view, go to this API reference page.
The listComponent
shows a list of all users or channel members that can be invited or promoted to be operators. If the user is already a channel member or if the member is already an operator, they will not be shown on the list.
The following table shows the parameters of the configure
method of the listComponent
.
Parameters
Invite users | Type |
---|---|
delegate | SBUInviteUserModuleListDelegate |
dataSource | SBUInviteUserModuleListDataSource |
theme | SBUUserListTheme |
Promote members | Type |
---|---|
delegate | SBUPromoteMemberModuleListDelegate |
dataSource | SBUPromoteMemberModuleListDataSource |
theme | SBUUserListTheme |
Note: To learn more about the delegate, data source, and the properties of the
listComponent
for invite users view, go to this API reference page. For the promote members view, go to this API reference page.
The SBUInviteUserViewController
class uses a view model that is a type of the SBUInviteUserViewModel
class. The SBUPromoteMemberViewController
class uses a view model that is a type of the SBUPromoteMemberViewModel
class.
For both invite users view and promote members view, view model is created in the initializer of the view controller through the createViewModel(channel:channelUrl:channelType:users:)
method. When the view model object is created, it retrieves channel list data from Chat SDK to the view controller and updates the view through the baseSelectedUserViewModel(_:didChangeUserList:needsToReload:)
event.
Note: If the value of
channel
orchannelUrl
is invalid, the view model cannot retrieve the user list.
The following table shows the parameters of the createViewModel
method.
Parameter name | Type | Description |
---|---|---|
channel | SBDBaseChannel | Specifies the channel value. (Default: nil) |
channelUrl | String | Specifies the URL of the channel. (Default: nil) |
channelType | SBDChannelType | Specifies the type of channel. This parameter needs to be specified with |
users | [SBUUser] | Specifies a custom user list if you wish to use your own list of users. (Default: nil) |
Note: To learn more about the methods and the event delegates of the view model for the invite users view, go to this API reference page. For promote members view, go to this API reference page.
To learn more about the properties of SBUInviteUserViewController
, go to this API reference page. For SBUPromoteMemberViewController
, go to this API reference page.
You can customize the invite users view and promote members view by changing the view controller, module component, and view model that correspond to those key functions.
There are two ways to customize the view controller: change the default view controller value in the global SBUViewControllerSet
class or set a single-use custom view controller in the key function.
The custom view controller in the code below is used in the following customization examples.
- Change the value of
SBUViewControllerSet.InviteUserViewController
orSBUViewControllerSet.PromoteMemberViewController
.
- Use a one-time custom view controller in the invite users view or promote members view.
There are two ways to customize a module component: change the default module component value in the global SBUModuleSet.inviteUserModule
or SBUModuleSet.promoteMemberModule
class or set a single-use custom module component in the view controller.
The custom header component in the code below is used in the following customization examples.
- Change the value of
SBUModuleSet.inviteUserModule.headerComponent
orSBUModuleSet.promoteMemberModule.headerComponent
- Change the module component in
SBUInviteUserViewController
orSBUPromoteMemberViewController
.
Note: To learn more about the methods of
SBUInviteUserModule
go to this API reference page. ForSBUPromoteMemberModule
, go to this API reference page.
In order to use a customized view model or customize the existing view model's event delegate, you must override the view controller.
- Use a customized view model.
- Customize the view model's event delegate.
Note: You can also customize the data source using the same codes as above.