Join Room
Overview
To join and interact with others in audio or video call, the user needs to join a room
.
When user indicates that they want to join the room, your app should have -
- User Name - the name which should be displayed to other peers in the room.
- Auth Token - the client side authentication token generated by the Token Service.
You can also optionally pass these fields -
- Track settings can used to set initial audio/video mute status.
- User metadata - this can be used to pass any additional metadata associated with the user.
Join a Room
We'll call the join
method on the HMSSDK
object with an optional config containing above fields to join the room.
- First, create an instance of
HMSSDK
class. Store this instance as a property. Ensure that the SDK object is alive in memory so that you can receive event callbacks from SDK. The simplest way to do this is:
private val hmsSDK = HMSSDK .Builder(application) // Optional .setTrackSettings(trackSettings) .build()
Note: If you are using Preview then you must already have an instance of HMSSDK before invoking Preview APIs.
- Next, create an object of
HMSConfig
class using the available joining configurations.
We will be passing in:
- A user display name.
- The auth token.
- Metadata for the peer.
val hmsConfig = HMSConfig( userName = "user display name", authtoken = authToken, metadata = """{city: 'Winterfell', knowledge: 'nothing'}""")
-
You'll want to handle the callbacks from joining the room by making your ViewModel, Presenter or whatever you're using to handle business logic implement the
HMSUpdateListener
interface. -
Now, we are primed to join the room. All you have to do is pass the
config
object tohmsSDK
fun joinRoom(config : HMSConfig, hmsUpdateListener : HMSUpdateListener){ hmsSdk.join(config, hmsUpdateListener) }
That's it. You have joined a room successfully 🥳. You should now be able to have an audio only call with this.
Now, let's take a look at the signature of the Join API
fun join(config: HMSConfig, hmsUpdateListener: HMSUpdateListener)
As evident, join
accepts 2 arguments -
config
: an object of typeHMSConfig
class, the room configuration object which encapsulates user & token data.hmsUpdateListener
: a class conforming toHMSUpdateListener
interface.
The methods of HMSUpdateListener
are invoked to notify updates happening in the room like a peer joins/leaves, a track got muted/unmutes, etc.
After calling join
your app will be provided an update from the 100ms SDK.
✅ If successful, the fun onJoin(room: HMSRoom)
method of HMSUpdateListener
will be invoked with information about the room encapsulated in the HMSRoom
object.
❌ If failure, the fun onError(error: HMSException)
method will be invoked with exact failure reason.
Getting Current Room State
To navigate to another page once join has completed:
Use the onJoin callback in HMSUpdateListener.
fun joinRoom(config : HMSConfig){ hmsSDK.join(config, object : fun onJoin(room: HMSRoom) { override fun onJoin(room: HMSRoom) { // called when the user joins. } ... }) }