Join channels
Requires App Context
To set up and manage channel membership, you must enable App Context for your app's keyset in the Admin Portal.
join() connects a user to a given channel and sets membership - this way, the chat user can both watch the channel's content and be its full-fledged 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 }