Join channels
Requires App Context
Enable App Context on your keyset in the Admin Portal to manage memberships.
Use join() to connect a user to a channel and create a membership. The user can receive messages and is recorded as a channel member.
Method signature
join() accepts a callback function and a set of parameters as arguments. The Chat SDK invokes this callback whenever the current user receives a new message on a channel they have just joined. It subscribes the user to a channel and adds a message event listener underneath. The method also sets user and channel membership by creating a new Membership object that holds the user-channel relationship.
This method takes the following parameters:
1channel.join(
2 custom: Any = null,
3 callback: (Message) -> Unit
4): PNFuture<JoinResult>
Input
| Parameter | Description |
|---|---|
customType: AnyDefault: n/a | Any custom properties or metadata associated with the channel-user membership in the form of a JSON. Values must be scalar only; arrays or objects are not supported. App Context filtering language doesn’t support filtering by custom properties. |
callback *Type: (Message) -> UnitDefault: n/a | Callback function passed as a parameter. It defines the custom behavior to be executed when detecting a new Message object on the joined channel. |
Output
| Type | Description |
|---|---|
PNFuture<JoinResult> | Returned object containing all membership data. |
The returned JoinResult object contains the membership and disconnect fields:
| Parameter | Description |
|---|---|
membershipType: Membership | Returned object containing info on the newly created user-channel membership. |
disconnectType: AutoCloseable | Function that lets you stop listening to new channel messages or message updates while remaining a channel membership. This might be useful when you want to stop receiving notifications about new messages or limit incoming messages or updates to reduce network traffic. |
Sample code
Join the support channel and mark this membership as premium to add information about your support plan.
1 val channel: Channel
2 // ...
3
4 // join the channel and add metadata to the newly created membership
5 channel.join(custom = mapOf("support_plan" to "premium")) { message ->
6 println(message.text)
7 }.async {
8 it.onSuccess {
9 // handle success
10 }.onFailure {
11 // handle failure
12 }
13 }