Documentation

Configuration Options

You can customize the behavior of the UserView Android SDK through configuration options.

Setting Configuration

Use the UpscopeConfiguration.Builder when initializing the SDK:

val config = UpscopeConfiguration.Builder("YOUR_API_KEY")
    .requireAuthorizationForSession(true)
    .authorizationPromptTitle("Screen Sharing Request")
    .authorizationPromptMessage("Allow {%agentName%|Support} to view your screen?")
    .endOfSessionMessage("Thanks for using screen sharing!")
    .translationsYes("Allow")
    .translationsNo("Decline")
    .build()

Upscope.initialize(applicationContext, config)

Configuration Options

Session Authorization

OptionTypeDefaultDescription
requireAuthorizationForSessionBooleanServer configRequire user permission before screen sharing starts.
authorizationPromptTitleStringServer configCustom title for the authorization dialog.
authorizationPromptMessageStringServer configCustom message for the authorization dialog. Supports placeholders.

Message Placeholders

The authorizationPromptMessage supports these placeholders:

  • {%agentName%|fallback} - Agent's name with a fallback if unavailable
  • {%currentDomain%} - App name on Android

Example:

.authorizationPromptMessage("{%agentName%|Our support team} would like to view your screen")

UI Display

OptionTypeDefaultDescription
showTerminateButtonBooleanServer configShow a button to end the screen sharing session.
endOfSessionMessageStringServer configMessage displayed when the session ends.
stopSessionTextStringServer configCustom text for the stop session button.

Remote Control

OptionTypeDefaultDescription
allowRemoteClickBooleanServer configAllow agents to remotely tap on the screen.
allowRemoteScrollBooleanServer configAllow agents to remotely scroll the screen.
requireControlRequestBooleanServer configRequire user approval before agents can use remote input.
controlRequestTitleStringServer configCustom title for the control request prompt.
controlRequestMessageStringServer configCustom message for the control request prompt.

Lookup Code

OptionTypeDefaultDescription
enableLookupCodeOnShakeBooleanServer configShow lookup code dialog when device is shaken.
lookupCodeKeyTitleStringServer configCustom title for the shake detection dialog.
lookupCodeKeyMessageStringServer configCustom message for shake dialog. Supports {%lookupCode%} placeholder.

Localization Strings

OptionTypeDescription
translationsYesStringCustom text for "Allow" button in authorization prompt.
translationsNoStringCustom text for "Deny" button in authorization prompt.
translationsOkStringCustom text for "OK" button.

System Options

OptionTypeDescription
autoConnectBooleanAutomatically connect on initialization. Defaults to true via server config.
regionStringServer region for connections.

Custom Authorization UI

You can replace the default authorization dialog with your own UI by providing an onSessionRequest listener:

val config = UpscopeConfiguration.Builder("YOUR_API_KEY")
    .requireAuthorizationForSession(true)
    .onSessionRequest(OnSessionRequestListener { response, agentName ->
        // Show your custom UI here
        // Call response.accept() or response.reject()
        myCustomDialog.show(agentName) { accepted ->
            if (accepted) response.accept() else response.reject()
        }
        // Return a Cancellable for cleanup if the request is dismissed externally
        Cancellable { myCustomDialog.dismiss() }
    })
    .build()

Similarly, use onControlRequest to customize the remote control authorization prompt:

val config = UpscopeConfiguration.Builder("YOUR_API_KEY")
    .requireControlRequest(true)
    .onControlRequest(OnControlRequestListener { response ->
        response.accept() // or response.reject()
        null // or return a Cancellable
    })
    .build()

Full Example

val config = UpscopeConfiguration.Builder("YOUR_API_KEY")
    .requireAuthorizationForSession(true)
    .authorizationPromptTitle("Screen Share")
    .authorizationPromptMessage("{%agentName%|Support} wants to help you")
    .showTerminateButton(true)
    .endOfSessionMessage("Session ended. Thank you!")
    .stopSessionText("End Session")
    .allowRemoteClick(true)
    .allowRemoteScroll(true)
    .enableLookupCodeOnShake(true)
    .lookupCodeKeyTitle("Your Code")
    .lookupCodeKeyMessage("Share this code: {%lookupCode%}")
    .translationsYes("Yes, share")
    .translationsNo("No thanks")
    .translationsOk("Got it")
    .region("us-east")
    .build()

Upscope.initialize(applicationContext, config)