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 |
---|---|
custom Type: Any Default: 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) -> Unit Default: 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 |
---|---|
membership Type: Membership | Returned object containing info on the newly created user-channel membership. |
disconnect Type: 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 }