Documentation

Configuration Options

You can customize the behavior of the PRODUCT Flutter SDK through configuration options.

Setting Configuration

Pass options when creating the UpscopeConfiguration:

final config = UpscopeConfiguration(
  apiKey: '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',
);

await Upscope.instance.initialize(config);

Configuration Options

Session Authorization

OptionTypeDefaultDescription
requireAuthorizationForSessionbooltrueRequire user permission before screen sharing starts.
authorizationPromptTitleString?(Set through the admin interface)Custom title for the authorization dialog.
authorizationPromptMessageString?(Set through the admin interface)Custom 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

Example:

authorizationPromptMessage: '{%agentName%|Our support team} would like to view your screen',

UI Display

OptionTypeDefaultDescription
showTerminateButtonbooltrueShow a button in the banner to end the screen sharing session.
endOfSessionMessageString?(Set through the admin interface)Message displayed when the session ends.
stopSessionTextString?(Set through the admin interface)Custom text for the stop session button.

Remote Control

OptionTypeDefaultDescription
allowRemoteClickbool?(Set through the admin interface)Allow agents to remotely tap on the screen.
allowRemoteScrollbool?(Set through the admin interface)Allow agents to remotely scroll the screen.
requireControlRequestbool?(Set through the admin interface)Require user approval before agents can use remote input.
controlRequestTitleString?(Set through the admin interface)Custom title for the control request prompt.
controlRequestMessageString?(Set through the admin interface)Custom message for the control request prompt.

Lookup Code

OptionTypeDefaultDescription
enableLookupCodeOnShakebool?(Set through the admin interface)Show lookup code popup when device is shaken.
lookupCodeKeyTitleString?(Set through the admin interface)Custom title for the shake detection alert.
lookupCodeKeyMessageString?(Set through the admin interface)Custom message for shake alert. Supports {%lookupCode%} placeholder.

Localization Strings

OptionTypeDescription
translationsYesString?Custom text for "Allow" button in authorization prompt.
translationsNoString?Custom text for "Deny" button in authorization prompt.
translationsOkString?Custom text for "OK" button.

Multi-Language Translations

Every text option (titles, messages, and the strings above) also accepts a map keyed by language code instead of a single string. The translation matching the device language is shown, falling back to en if the device language isn't included:

translationsYes: {'en': 'Yes', 'it': 'Si'},
translationsNo: {'en': 'No', 'it': 'No'},

All of these can also be configured per language through the dashboard.

Full Device Sharing (iOS only)

These options configure the iOS Broadcast Upload Extension required for full-device screen sharing. Both are ignored on Android. Full-device sharing requests arrive via the onFullDeviceRequest stream — see Listening for Events for how to respond.

OptionTypeDescription
broadcastAppGroupIdString?App Group identifier shared between your iOS app and the Broadcast Upload Extension. Required for full-device screen sharing on iOS.
broadcastExtensionBundleIdString?Bundle identifier of your iOS Broadcast Upload Extension, used to auto-start the system broadcast picker.

System Options

OptionTypeDescription
autoConnectboolAutomatically connect on initialization. Default: true (set through the admin interface).
regionString?Server region for connections.

Full Example

final config = UpscopeConfiguration(
  apiKey: 'YOUR_API_KEY',
  requireAuthorizationForSession: true,
  autoConnect: 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',
  // iOS only — required for full-device screen sharing
  broadcastAppGroupId: 'group.com.example.app',
  broadcastExtensionBundleId: 'com.example.app.BroadcastExtension',
);

await Upscope.instance.initialize(config);