Starting session

To use any SDK a API request, a Session should be started first.

Session establishes communucation between client and server, and Session object used for constructing and sending requests and receiving responses and udates from backend. To construct session, some keys should be taken first from backend`s installation along with connection endpoints settings.

Here an example of starting session (for details please refer to example project):

private fun setUpSession() {

	// mtContext used for acces to underlying MtProto protocol
    authData = mtContext.authenticate().get(TIMEOUT, TimeUnit.MILLISECONDS)

	// get MtProto authentication data
    val authText = gson.toJson(authData)
    val restoredAuthData = gson.fromJson(authText, AuthData::class.java)

	// create session object
    session = mtContext.createSession()
        .setTag("rpc")
        .setScheduler(mtContext.defaultScheduler)
        .setAuthData(authData)
        .build()

	// 
    val updatesManager = mtContext.createUpdatesManager(session) { true }
    updatesManager.listener = UpdatesManagerListener()

	// initialize session state listener
    val sessionListener = object : Session.Listener {

        override fun onStarted(p0: Session?) {
            binding.textviewFirst.text = "Authorize to proceed"
            binding.authorizeCaller.isEnabled = true
            binding.authorizeCallee.isEnabled = true
        }

        override fun onStopped(p0: Session?) {}

        override fun onConnected(p0: Session?, p1: Int) {}

        override fun onDisconnected(p0: Session?, p1: Int) {}

        override fun onError(p0: Session?, p1: Exception?) {}

        override fun onMessage(p0: Session?, p1: TLType?) {}

        override fun onNewSessionCreated(p0: Session?) {}

    }
    session.addListener(sessionListener)
	
	// start session
    session.start()
}

Last updated