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:
channel.join(
custom: Any = null,
callback: (Message) -> Unit
): PNFuture<JoinResult>
Input
Parameter | Type | Required | Default | Description |
---|---|---|---|---|
custom | Any | No | 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 | (Message) -> Unit | Yes | 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 | Type | Description |
---|---|---|
membership | Membership | Returned object containing info on the newly created user-channel membership. |
disconnect | 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. |
Basic usage
Join the support
channel and mark this membership as premium
to add information about your support plan.
val channel: Channel
// ...
// join the channel and add metadata to the newly created membership
channel.join(custom = mapOf("support_plan" to "premium")) { message ->
println(message.text)
}.async {
it.onSuccess {
// handle success
}.onFailure {
// handle failure
}
}