Skip to content

Configurations

Launcher Configuration

Base

Field Description
configVersion string A free-form user-defined string that can be used to indicate the version of this configuration file being published. Added as a convenience field to help customers track which configuration file version is on the device.
license string (mandatory) A customer-specific license key to provide access to the Launcher. There will only be one key assigned per customer and should be applied to all the customer's devices. To obtain a license key, request one from the BlueFletch EMS sales representative.
group_inclusion Listing of LDAP or security groups expected; each security group will contain an array of applicable application groups.In the example above, users that log in as "Manager" will get applications listed under GroupA, GroupB and "*"."*" is the default security group, and will be applicable when no one is logged into the device. Note that this only works in conjunction with 'groups' below 3.2.x. Beginning 3.2.x, group_inclusion can also be applied to "layouts".
groups Contains the "whitelist" of package names for each application group. This is a simplified listing of packages. For more control, use "layouts"
layouts object Defines which applications to display based on Login state.
layoutSettings object (optional) Defines advanced global settings for the layout
settings object Key Value pairs of settings that control processing. See Settings for details.
luggageTag object Key Value pairs of Luggage Tag settings that customizes how Launcher locks the device when it's not on an approved network.
approvedNetworks array A list of networks that's been approved for a device to use.
defaultSession An object representing the default session that will be stored in the Launcher session content provider if no user is logged in.
patterns array A set of pattern objects representing a configuration for associating search text with applications. If the search text matches the configured regex pattern, the application specified will be displayed, and could also specify the intent and extras that will be passed to the app when the search result is tapped.
extendedAttributes object Can be used to specify key-value pairs that customers can use to provide additional custom settings.
disablePackages array This is a list of packages that launcher is to disable. Launcher will disable these at device boot, and if the packages get installed. This is available starting in 2.8.x
theme object Contains information on an Organization's device theme. See Theme for details.
emsSupportTool object Key Value pairs that control support application processing. See Support Application Configurations for more information
notifications array Collection of MQTT Broker Object connection settings. See Messaging Configurations for more information
auth_adal object Key Value pairs of settings that control ADAL Authorization
auth_okta object Key Value pairs of settings that control OKTA Authorization (Supported OKTA APK 2.x). Prior to 2.x, see Settings for Okta Auth Settings.
keyboard object Key Value pairs of settings that control keyboard
intents object Custom intents to fire at certain processing points, such as Login, Logut, Screen On, Boot, Cradle and Un-Cradle.
customField object Configuration to define the format and source for custom UI fields.
secureNotifications object Configurations for Secure Notification Support.
externalSiteInfoFinder object Configuration for using an external Site Location finder service.
orientationOverride object Configuration for changing the BlueFletch Launcher orientation based on device model. Note that this is for the Launcher only, and does not affect orientation for the entire device or other applications.

Settings

Field Description
activateSearchBar boolean Determines whether the search bar will be present in the default launcher view. Valid values are "true" or "false", defaults to "false". Tapping on search bar will trigger the search activity.
enableNotifications boolean Determines whether the notifications service will be started. Default is true.
idleTimeInMinutes integer A number value corresponding to # of minutes the launcher will automatically logout the user. Countdown for idle time starts when the screen turns off, and timer resets when the screen is woken up. If the device is not woken up before the timer expires, the screen will wake up logged out.
maxSessionTimeInMinutes integer A number value corresponding to # of minutes the launcher will automatically logout the user. Countdown for max session time starts on user login.
requireAuthOnScreenOn boolean If true, launch the configured Login page when the device screen is turned on. Default is false.
requireAuthLockDelay integer Time in seconds before the Launcher requires re-authentication after the device goes to sleep (only applies if requireAuthOnScreenOn is set to true).
useSecondaryAuth string Indicates type of secondary auth during re-authorization. Values are none, pin, face and nfc (NFC available in EMS Auth 3.2.2). Default is none.
secondaryAuthRequired boolean If set to true, will logout the user if they cancel creation of pin. Default is false. Available starting Launcher 3.3.x. Starting 3.6.x, user will have the option to logout during verification as well.
secondaryAuthPinLength integer Set the minimun number of digits required for pin. Minimum value is 4, default is 6 if not specified. Available in Auth 3.1.x.
pinMaxLength integer Number of required digits for the PIN, default is 6 if not specified, minimum of 4, maximum of 10. This setting supercedes secondaryAuthPinLength, available from Auth 3.6.x and above.
pinEnforceConsecutiveRule boolean If true will not allow more than 3 consecutive similar digits. Default is set to true. (e.g. 1111 will not be allowed, but 1112 is allowed). Available from Auth 3.6.x and above.
pinEnforceSequentialRule boolean If true will not allow more than 3 sequential digits up or down (e.g. 1234 is not allowed but 1235 is allowed). Default is set to true. Available from Auth 3.6.x and above.
pinEnforceBlackList string Comma-delimited list of PIN codes that cannot be used by the user (e.g. if 1112 is specified, even if it passes the consecutive rule, it will be disallowed by blacklist). Available from Auth 3.6.x and above.
pinMaxRetryCount integer During verification, max number of incorrect attempts allowed, after which the currently logged in user is forcibly logged out. Available from Auth 3.6.x and above.
pinAutoSubmit boolean If set to false, will require the user to tap on the Enter key after entering their PIN. If set to true, the PIN will be submitted after last entry (based on pinMaxLength). Default is true. Available from Auth 3.6.x and above.
useFaceRecognition Deprecated, start using useSecondaryAuth. boolean If true use the face recognition functionality to re-authorize the user during re-authentication. Default is false.
adminPassword string Field that contains the hash of the local admin password. Can also be omitted to use the built-in local admin password.
useAppEnabler boolean By default (if set to false) the launcher will only hide application icons corresponding to the whitelist. Typically this should be sufficient as users will not be able to launch applications if the launcher is present. If set to true, the launcher will perform an additional step to disable the application at an OS level (installed but not usable) if not part of current session whitelist.
enableOptiko boolean Set to true if Support agent is present. This will report login, store information, etc. to the Support agent. Deprecated in 3.x, value is always true
authBrokerService boolean Set to true if Auth Service Broker is needed.
nfcLoginSupport Set to false to enable listening on NFC for Login
nfcDataTypes The datatype/tag that contains the user credentials.
device_lost_hours integer Used within Device Information. Represents number of hours to have not heard from a device to indicate as lost
vision_threshold double When using vision re-auth, what is the percentage threshold to indicate a match. Ie. 0.45
vision_attempts integer When using vision re-auth, number of attempts to match a face to the vision database
useSiteInfoService boolean Indicates to use the sites csv file to determine the location of the device. Default is false
refreshSiteOnStartup boolean If set to true, will attempt to always determine current site after a reboot. Default is false.
distanceInMeters integer When using the Site Information Service, the radius distance in meters for GPS Location matching
screenTimeout integer Number of seconds for device screen timeout (15, 30, 60, 120, 300, 600). Support on Zebra devices starting in launcher 3.3.x
onCradleIgnoreLogout boolean If set to true the Launcher will not logout the user when the device is cradled or starts charging. Default is false. This setting is available starting Launcher 3.9.6+.
cradleLogoutDelayInSeconds integer If set to greater than 0, the Launcher will not immediately logout the user. Instead when the device is cradled or docked, the Launcher will prompt the user to either continue with the session or logout immediately. If the user does not respond within the # of seconds specified, the user will be logged out automatically, the default is 0 (no prompt). This setting is ignored if onCradleIgnoreLogout is set to true.
disallowLoggedInSiteChange boolean If set to true, the user will not be able to manually launch the change location activity if they are logged in. Default is set to true.
nfcTurnOff boolean Indicates NFC should be turned off at BOOT and during Logout. False indicates do nothing with NFC. Valid values are "true" and "false", defaults to "false".
nfcTurnOnAtLogin boolean Indicates NFC should be turned On after user login. False indicates do nothing with NFC. Valid values are "true" and "false", defaults to "false".
lockInMotion boolean Indicates that the device should be locked while the user is driving. False indicates that the device should not be locked while the user is driving. Valid values are "true" and "false", defaults to "false".
lockInMotionConfidence integer Indicates the needed level of confidence that the user is driving in order to lock the device. For instance, if this is set to 50, the device will be locked when we are at least 50 percent confident that the user is driving. This value can range from 0 to 100, and the default value is 80. Note that this setting will only be utilized if lockInMotion is set to "true".
clearAppDataOnLogout boolean If set to true will clear the application data for all applications opened within the user session on logout. Default is false.
clearAppDataIncludeList string Comma-delimited string of packages that will be cleared of application data on logout, regardless of whether they were opened or not. Use for applications that are not directly opened by the user from the Launcher home screen
clearAppDataExcludeList string Comma-delimited string of packages that are exempt from clearing of application data even on logout (but recent tasks will be removed, unless specified in the clearRecentExcludeList)
clearRecentExcludeList string Comma-delimited string of packages that are exempt from being killed when the user logs out or when the device is cradled (Honeywell only). If clearAppDataOnLogout is set to true, the package must also be specified in the clearAppDataExcludeList.
authProfileManager boolean If set to true, will enable integration with Zebra's Profile Manager. Default is false.
disableRecents boolean If set to true, the recents button will be disabled. Default is false.
unsecuredDeviceTimeoutInSecs integer Indicates the number of seconds the device is given to be logged in or cradled before an indefinitely looping alarm sounds until the device is logged into or cradled.
unsecuredDeviceEffects boolean Indicates whether a warning countdown alarm should sound when 12 seconds or less are remaining on the unsecured device timeout.
logLevel string Determines the level of log to be logged in Support Agent. Valid values are "verbose", "debug", "info", or "error" . If set, only the level of logs set and below will be logged. Defaults to "info".

The proceeding settings will be deprecated starting Launcher 3.x. If using Launcher 3.x, refer to Auth Provider Configurations

Field Description
The following only applies if using LDAP based identity provider:
ldap_hostname Hostname of the LDAP server (LDAP Auth only)
ldap_port Port of the LDAP server (LDAP Auth only)
ldap_domain The domain of the user when logging in, i.e. @domain
ldap_rootDN The Root DN of where the users can be searched after authentication.
ldap_useHttps Set to true to use LDAPS when authenticating
The following applies if using NFC authentication
The following will be used to configure the internal Oauth2 Broker:
oauth2_claim_userId The field to use for the userId claim (used by internal broker)
oauth2_claim_username The field to use for the PTT Pro user name field
The following are for OKTA or OpenID connect identity providers:
okta_issuer_uri The configured Issuer URI for the identity provider
okta_client_id The configured client ID for this application
okta_redirect_uri The configured redirect callback URI for this application
okta_scopes The scopes where this authentication applies
okta_force_logout This allows for overriding the default logout End Session URL. This is required for OneLogin
The following are for ADAL connect identity providers:
adal_authority Configured resource ID for this application
adal_resourceId Configured resource ID for this application
adal_clientId Configured Client ID for this application
adal_redirectUri Configured callback URL for this application
adal_claim_userId Passthrough field containing the userID (e.g. unique_name)
adal_claim_username LDAP passthrough field containing the user's display name
adal_claim_groups LDAP passthrough field containing the groups (e.g. equivalent to MemberOf)
adal_claim_baseUrl The base url for the ADFS environment
adal_claim_defaultDomain Optional, to pre-populate the username field with the domain prefix
The following are used within OKTA connect identity providers:
auth_location_field An optional setting that tells authorization which field in the auth provider response contains Location information. Used in conjunction with auth_location_regex.
auth_location_regex A regular expression to extract the location value from the location field. Used in conjunction with auth_location_field
auth_group_field An optional setting that tells authorization which field in the auth provider response contains Group information. Used in conjunction with auth_group_regex.
auth_group_regex A regular expression to match against the group information.
auth_group_regex_true If the regular expression auth_group_regex returns true (found a value), will use this group value.
auth_default_group A default group
auth_role_field An optional setting that tells authorization which field in the auth provider response contains User ROLE information. Used in conjunction with auth_role_regex. Available AUTH 1.1.x
auth_role_regex A regular expression to match against the role information
auth_role_regex_true If the regular expression auth_role_regex returns true (found a value), will use this Role value.
auth_default_role A default user role

Luggage Tag

Field Description
enable Indicates that the device should be locked while the device is connected to an unapproved network. False indicates that the device is free to connect to any network and will not activate Luggage Tag Mode.
thresholdInMinutes Indicates the number of elapsed minutes while the device is on an unapproved network needed before locking the device.
logo The url for an image to be displayed on the Luggage Tag view. If not set, Launcher will skip this and display other information if available.
line1 Indicates line 1 of an address for people to contact on the Luggage Tag view when attempting to help return a device to where it should be.
line2 Indicates line 2 of an address for people to contact on the Luggage Tag view when attempting to help return a device to where it should be.
email Indicates a preferred email address for people to contact on the Luggage Tag view when attempting to help return a device to where it should be.
phoneNumber Indicates a preferred phone number for people to contact on the Luggage Tag view when attempting to help return a device to where it should be.
unlockPassword The password required to unlock the device out of Luggage Tag Mode. If not available, Launcher will default to validating against the admin password. Password must be a sha256 hashed string.
alarmLoopInMinutes Indicates the number of elapsed minutes needed while Luggage Tag Mode is activated to play the alarm and continues to replay every time the same minutes has elapsed again until Luggage Tag Mode is deactivated.

Keyboard

Field Description
hapticFeedback String Determines what feedback the user will receive on the press of a key. Valid values are "hapticClick", "click", "haptic", and "none", defaults to "hapticClick".
bigButtonText boolean Determines if the default keyboard will be the big button layout. Valid values are "true" and "false", defaults to "false".
alphanumeric boolean Determines if the default keyboard will be the alphanumeric layout. Valid values are "true" and "false", defaults to "false".
keyPreview boolean Determines if key previews will be displayed on key press. Valid values are "true" and "false", defaults to "false".

Example:

"keyboard": {
  "hapticFeedback" : "hapticClick",
  "bigButtonText" : false,
  "alphanumeric" : true,
  "keyPreview" : false
}

Browser

Browser defaults to these settings if the intent does not hold the correct settings.

Field Description
showUrl boolean Determines if the url will be displayed to the user. Valid values are "true" and "false", defaults to "false".
showTitle boolean Determines if the webpage title is displayed to the user. Valid values are "true" and "false", defaults to "false".
allowCookiePreview boolean Determines if user can view the cookies for the current url. This is used for development purposes. Valid values are "true" and "false", defaults to "false".
fixOrientation boolean Determines if the view is fixed to portrait. Valid values are "true" and "false", defaults to "false".
allowUrlEdit boolean Determines if the user is allowed to edit the url. Valid values are "true" and "false", defaults to "false".
defaultHomepage string URL of the website to be visited when the browser application is clicked on. Defaults to a blank url.
enablePinchToZoom boolean Determines if the user is allowed to pinch to zoom within the webpage. Valid values are "true" and "false", defaults to "false".
allowInsecureSites boolean Determines if the user is allowed to visit insecure websites. Valid values are "true" and "false", defaults to "false".
allowCameraAccess boolean Determines if the website can access the camera. Valid values are "true" and "false", defaults to "false".
allowAudioCapture boolean Determines if the website can access the microphone. Valid values are "true" and "false", defaults to "false".
allowPrinterAccess boolean Determines if the website can access the printers. Valid values are "true" and "false", defaults to "false".
logLevel string Determines the level of log to be logged in Support Agent. Valid values are "verbose", "debug", "info", or "error" . If set, only the level of logs set and below will be logged. Defaults to "info".

Example:

"browser": {
    "showUrl" : false,
    "showTitle" : false,
    "allowCookiePreview" : false,
    "fixOrientation" : false,
    "allowUrlEdit" : false,
    "defaultHomepage" : "https://bluefletch.com",
    "enablePinchToZoom" : false,
    "allowInsecureSites" : false,
    "allowCameraAccess" : false,
    "allowAudioCapture" : false,
    "allowPrinterAccess" : false,
    "logLevel" : "error"  
}

Intents

Custom intents to fire at certain processing points, such as Login, Logut, Screen On, Boot, Cradle and Un-Cradle.

Field Description
login array A collection of Custom Intents to invoke after user logs into the device.
logout array A collection of Custom Intents to invoke after user logs out of the device, prior to launcher completing full logout.
postLogout array A collection of Custom Intents to invoke after user logs out of the device. This occurs after all Logout actions are completed.
boot array A collection of Custom Intents to invoke after device boot.
uncradle array A collection of Custom Intents to invoke after the device is removed from the cradle.
cradle array A collection of Custom Intents to invoke after the device is placed on the cradle.
screenOn array A collection of Custom Intents to invoke after the screen turns on.

Example:

"intents" : {
    "login" : [
    ],
    "logout":[
    ],
    "boot" : [],
    "uncradle": [],
    "cradle": [],
    "screenOn": [{
      "package": "com.android.calculator2",
      "typeIntent": "a"
    }]
  },

Custom Intents

Field Description
package string The package to invoke.
action string Android action, or special Platform Action.
category string Android Category
class string The Class name within the package.
flags integer Flags to use during firing the intent. Currently supports the value of 1, which indicates new task.
typeIntent string The type of intent, values b, i, a, d or p. b = Broadcast (default), i = implicit intent, a = start Activity, d = delay, p = platform
extras array Key/Value pair of additional extra data to send
data string Data to send with the intent

Examples:

a. To start an application, use intent type "a" and supply the package name.

{
      "package": "com.android.calculator2",
      "typeIntent": "a"
}

b. To invoke an action for an application, use intent type "a", provide the action, and optionally the package name.

{
    "action": "com.bluefletch.ems.remotecontrol.ACTION_START",
    "package": "com.bluefletch.ems.emm.remoteagent",
    "class": "com.bluefletch.ems.remotecontrol.RemoteActivity",
    "flags" : 1,
    "typeIntent": "a"
}

c. To delay processing before another intent is invoked, use the 'delay' intentType. Use type "d", and provide the delay, in milliseconds, within "data".

{
    "typeIntent": "d",
    "data": 5000
}

Special Platform Action (if typeIntent is 'p')

  • CLEARCACHE : This special action will invoke the Platforms Clear cache for the supplied package.
  • LOGIN : This special action will invoke the Launcher Login processing flow.

Example:

"intents" : {
    "login" : [
    ],
    "logout":[
            {
                "action": "CLEARCACHE",
                "package": "com.android.chrome",
                "typeIntent": "b"
            }
    ],
    "boot" : [],
    "uncradle": [{
        "action": "LOGIN",
        "typeIntent": "p"
    }],
    "cradle": [],
  },

Layout Settings

Layout settings defines advanced global settings for displaying the icons on the Launcher workspace.

Field Description
columns integer The number of icon columns for phones in the fixed portrait mode. If not specified, the default value is 3 (minimum of 3).
tabletColumns integer The number of icon columns for tablets in landscape mode. If not specified, the default value is 6 (minimum of 3).
iconSize string Set to "normal" to use the standard icon size for the device. Set to "large" to display larger icons (1.5x). Set to "fit" to make the icon width fit the available space, based on the column size. The default value is "normal".
showLabel boolean Set to false to hide the label on all the icons. The default value is true.
boldTypeLabel boolean If set to true, the labels will be rendered using boldface type. The default value is false.
labelFontSize number If set will change the font size of the icon labels. Default is 14.

Example:

    "layoutSettings" : {
       "columns" : 3,
       "tabletColumns" : 6,
       "iconSize" : "normal",
       "showLabel" : true,
       "boldTypeLabel" : false,
       "labelFontSize" : 14
    },

Layouts

Layouts represent which applications the launcher will display, based on who is logged in.

Field Description
GROUP object An application object that represents applications for which the logged user has access. Example: manager, associate. Each GROUP has a collection of Application, Folder, and/or Shortcuts. See Application Object, Shortcut Object , Folder Object or Action Object for additional details.

Example:

    "layouts" : {
        "Manager":[ -Logged in Managers will have access to these Applications.- ],
        "Associates":[ -Logged in Associates will have access to these Applications.- ],
        "*": [ -OPEN ZONE definition of applications- ]
    },

Group Inclusions

Group Inclusions allow you to set application groups for identity provider groups.

Field Description
group_inclusion objects Contains the list of relevant identity provider groups, along with an array of application groups that will be applied when a user belongs to that identity group. Each application group can be defined in the layouts section and will be merged together.

Example:

In the example below, when a user with a Managers group logs in, he will see all three application group sets, while the user with a WarehouseAssociate group will only see the Back office and Open zone apps.

{
  "configVersion" : "example configuration",
  "group_inclusion" : {
    "Managers" : ["BackOfficeApps", "FloorApps", "OpenZone"],
    "WarehouseAssociate" : ["BackOfficeApps", "OpenZone"],
    "FloorAssociates" : ["FloorApps", "OpenZone"],
    "Cashiers" : ["FloorApps", "OpenZone"],
    "*" : ["*"]
  },
  "layouts" : {
    "BackOfficeApps" : [
      {  "package" : "com.bluefletch.receiving" },
      {  "package": "com.bluefletch.delivery" },
      {  "package" : "com.bluefletch.itemlookup" }
    ],
    "FloorApps" : [
      {  "package" : "com.bluefletch.itemlookup" },
      {  "package" : "com.bluefletch.bopis" },
      {  "package": "com.bluefletch.mpos" }
    ],
    "OpenZone" : [
      {  "package" : "com.android.calculator" }
    ]
  }
  ...

Application Object

Available fields used to describe applications displayed on the Launcher Home Screen.

Field Description
package string The package name of the application to start
label string The name of the application to display (optional)
activity string The Activity to start (optional)
kiosk boolean If set to true, will put launcher into Kiosk mode for this applicaiton (optional)
icon string Represents a icon to overvide the default application image. Ie. /sdcard/DCIM/icons/logo.png (optional)
nfcEnable boolean If this Application is started by End User, and the value is "true", then enable NFC (if not on). False indicates do nothing with NFC. Valid values are "true" and "false", defaults to "false".
includeUserInfo boolean If set to true, will pass the following user information as extras when calling the intent: EXTRA_USERID, EXTRA_USERNAME, EXTRA_GROUP and EXTRA_ACCESS_TOKEN

Example:

    {
        "label" : "BlueFletch",
        "url" : "https://bluefletch.com",
        "icon" : "/sdcard/DCIM/icons/bluefletch_logo.png",
        "nfcEnable": true
    },
    {
        "package": "com.android.calculator2",
        "nfcEnable": true
    },
    {
        "package" : "com.bluefletch.ems.support"
    },

Shortcut Object

Available fields used to describe Web Shortcuts displayed on the Launcher Home Screen.

Field Description
label string The name of the application to display (optional)
url string A URL to navigate to.
icon string Represents a icon to overvide the default application image. Ie. /sdcard/DCIM/icons/logo.png (optional)
kiosk boolean If set to true, will put launcher into Kiosk mode for this shortcut (optional)
nfcEnable boolean If this Application is started by End User, and the value is "true", then enable NFC (if not on). False indicates do nothing with NFC. Valid values are "true" and "false", defaults to "false".
browser string Set to the package name of the target browser to use for this shortcut. If not specified, the Launcher will open the URL in a Chrome Custom Tab.
browserOverrides object If using the BF Browser, this is an object with the browser settings to be overriden for this specific shortcut. All of the settings described in the browser documentation page can be overriden in this section.
showUrl boolean Determines if the url will be displayed to the user. Valid values are "true" and "false", defaults to browser settings. (optional) Note: this setting will be deprecated, use browserOverrides instead.
showTitle boolean Determines if the webpage title is displayed to the user. Valid values are "true" and "false", defaults to browser settings. (optional) Note: this setting will be deprecated, use browserOverrides instead.
allowCookiePreview boolean Determines if user can view the cookies for the current url. This is used for development purposes. Valid values are "true" and "false", defaults to browser settings. (optional) Note: this setting will be deprecated, use browserOverrides instead.
fixOrientation boolean Determines if the view is fixed to portrait. Valid values are "true" and "false", defaults to browser settings. (optional) Note: this setting will be deprecated, use browserOverrides instead.

Example:

{
    "label" : "BlueFletch",
    "url" : "https://bluefletch.com",
    "icon" : "/sdcard/DCIM/icons/bluefletch_logo.png",
    "browser" : "com.bluefletch.ems.browser",
    "browserOverrides" : {
        "showUrl" : false,
        "showTitle" : true,
        "allowCookiePreview" : false,
        "fixOrientation" : true
    },
    "nfcEnable": true

}

Folder Object

Available fields used to describe Folders on the Launcher Home Screen.

Field Description
label string The name of the folder to display (required)
contents array An array of application objects. Used in grouping applications into folders

Example:

 {
        "label" : "Tools",
        "contents":[
            {
                "package" : "com.bluefletch.ems.support"
            },
            {
                "package" : "com.symbol.datawedge"
            },
            {
                "label" : "BlueFletch",
                "url" : "https://bluefletch.com",
                "icon" : "/sdcard/DCIM/icons/bluefletch_logo.png"
            },
            {
                "label" : "Staging tools",
                "contents" : [
                    {
                        "package" : "com.symbol.tool.stagenow"
                    }
                ]
            }

        ]
    }

Action Object

Available fields used to describe a System Action to display on the Launcher Home Screen.

Note: A list of Andriod Settings actions can be found here, Android Settings Actions, although some actions might not be fully supported.

Field Description
action string The system level action string to invoke. Example: android.settings.WIFI_SETTINGS or android.settings.BLUETOOTH_SETTINGS
label string The name to display (required)
icon string Represents a icon to overvide the default application image. Ie. /sdcard/DCIM/icons/logo.png or a package name: com.android.settings (optional)
wifiSettingsEnabled boolean If this Application is started by End User, and the value is "true", then enable editing within the Wifi Settings UI. False indicates do nothing with Wifi Settings UI. Valid values are "true" and "false", defaults to "false".

Example:

{
    "label" : "Wifi Settings-ReadOnly",
    "action": "android.settings.WIFI_SETTINGS",
    "icon" : "com.android.settings"
}

defaultSession

Default session used by the Launcher when no user is logged in.

Field Description
userId string Defaulted userId value. Suggested to be blank.
userName string Defaulted display within the User Name display. Suggested to be blank.
groups string The defaulted Groups value to use for OpenZone. Default is *.
location string The Site / Location to default the device.

Example:

 "defaultSession": {
        "userId": "",
        "userName": "",
        "groups": "*",
        "location": ""
    },

Theme

Available settings for 'theming' a device UI per an Organization's needs. Starting 3.0.x, you are able to define and customize separate wallpapers for the main and lock screens.

Field Description
enable boolean To enable theme support. Default true.
logo string A file location for a company specific logo. A URL is fine, but for better performance use a local file downloaded via MDM.
background string A hex code for a company specific background color. Starting in 3.0.x, set to blank to use the device wallpaper as the background.
accentColor string A hex code for a company specific accent color.

The following additional theme settings were introduced starting in version 3.0.x of the Launcher:

Field Description
darkTheme boolean Set to false when using a light background/theme, as this will change all element text colors to black. If using dark wallpaper, set to true. Defaulted to true.
wallpaperImage string name, local path or URL to use as the wallpaper for the Main screens. The following valid values can be used which are built-in with the Launcher: bubble, topology, messe or swirl.
duoToneWhite string Colorize/tint the wallpaper using Duotone, this value is the hex value of the light halftone color of the image. Examples of Duotone images can be found here. Beginning 3.3.x, set to "" to keep the original color of the wallpaper.
duoToneBlack string Colorize/tint the wallpaper using Duotone, this value is the hex value of the dark halftone color of the image. Examples of Duotone images can be found here. Beginning 3.3.x, set to "" to keep the original color of the wallpaper.
blurRadius integer Blur the specified wallpaper image using this blur radius.
blurPasses integer Use in conjunction with the blurRadius configuration setting, will apply a blur filter to the wallpaper this many times. If set to 0 the wallpaper will not apply any blur filters.
folderBackgroundColor string A hex code for the background color of an open folder object. This value should comply with the darkTheme setting. For instance, choosing a light background color while enabling darkTheme would make text difficult to read.

Use the settings below to apply a separate theme to the Lock screen, starting in 3.0.x. If the following settings are omitted, the lock screen will use the same wallpaper as the main screen:

Field Description
wallpaperImage_lock string name, local path or URL to use as the wallpaper for the Main screens. The following valid values can be used which are built-in with the Launcher: bubble, topology, messe or swirl.
duoToneWhite_lock string Colorize/tint the wallpaper using Duotone, this value is the hex value of the light halftone color of the image. Examples of Duotone images can be found here. Beginning 3.3.x, set to "" to keep the original color of the wallpaper.
duoToneBlack_lock string Colorize/tint the wallpaper using Duotone, this value is the hex value of the dark halftone color of the image. Examples of Duotone images can be found here. Beginning 3.3.x, set to "" to keep the original color of the wallpaper.
blurRadius_lock integer Blur the specified wallpaper image using this blur radius.
blurPasses_lock integer Use in conjunction with the blurRadius_lock configuration setting, will apply a blur filter to the wallpaper this many times. If set to 0 the wallpaper will not apply any blur filters.

Example:

"theme" : {
        "enable" : "true",
        "logo" : "/sdcard/Download/ems/bsb_bikes_logo.png",
        "darkTheme" : true,
        "wallpaperImage" : "messe",
        "duoToneWhite" : "#006497",
        "duoToneBlack" : "#002442",
        "blurRadius" : 5,
        "blurPasses" : 0,
        "folderBackgroundColor" : "#AAAAAA",
        "wallpaperImage_lock" : "topology",
        "duoToneWhite_lock" : "#006497",
        "duoToneBlack_lock" : "#002442",
        "blurRadius_lock" : 5,
        "blurPasses_lock" : 0

    }

Custom Fields

Allows display of values in the Launcher home screen retrieved from an external file.

Field Description
format string The format of the string to display on the UI. name placeholders should be enclosed in braces and must match the corresponding name field.
source object array An array of objects that define the source file, regular expression and field name to be parsed. If multiple pieces of information is being parsed from a file, create multiple instances of this object using the same file name but different regex patterns and field names.

Each source object is defined as follows:

Field Description
pathfile string The full path and filename of the file to be parsed.
regex string A Java regular expression string that will extract the information from the file. The regular expression should result in the information being returned on the first match group.
name string The value retrieved by the regular expression will be placed in this field name. This is the field name that will be present in the format placeholder.

Example:

    ...
    "customField" : {
        "format" : "{Extension} - {Department}",
        "source" : [
            {
                "pathfile": "/sdcard/Download/extension_dept.txt",
                "regex": "Ext=(.*)",
                "name": "Extension"
            },
            {
                "pathfile": "/sdcard/Download/extension_dept.txt",
                "regex": "Dept=(.*)",
                "name": "Department"
            }
        ]
    },
    ...

Pattern Object

Represents configuration for associating search text with applications. If the search text matches the configured regex pattern, the application specified will be displayed, and could also specify the intent and extras that will be passed to the app when the search result is tapped.

Field Description
pattern string A regular expression to match the entered search text or scanned text
displayPrefix string What to display in the search results for this pattern match
package string The package to invoke if user presses the search result.
extraKey string The name of the extraKey to use if search result is pressed.
intent string Placeholder for future use.

Example:

"patterns" : [
    {"pattern": "^[0-9]{12}$", "displayPrefix" : "Lookup", "package" : "com.bluefletch.acc.itemlookup", "intent" : "Intent", "extraKey" : "SEARCH_TEXT" },
    {"pattern": "^[0-9]{12}$", "displayPrefix" : "Lookup", "package" : "com.bluefletch.demoscanreceiver", "intent" : "Intent", "extraKey" : "SCAN_TEXT" },
    {"pattern": ".*", "displayPrefix" : "Open", "package" : "com.bluefletch.retail.iteminquiry", "intent" : "Intent", "extraKey" : "KEY" },
    {"pattern": "^[0-9]{10}$", "displayPrefix" : "Call", "package" : "com.android.dialer", "intent" : "Intent", "extraKey" : "KEY" },
    {"pattern": "^[0-9]{10}$", "displayPrefix" : "Call", "package" : "com.android.dialer", "intent" : "Intent", "extraKey" : "KEY" },
    {"pattern": "^[0-9]{12}$", "displayPrefix" : "Lookup", "package" : "com.bluefletch.demoscanreceiver", "intent" : "Intent", "extraKey" : "SCAN_TEXT" },
    {"pattern": "^(\\d{4})?$", "displayPrefix" : "Call", "package" : "com.android.dialer", "intent" : "Intent", "extraKey" : "KEY" },
    {"pattern": "^(\\d{4})?$", "displayPrefix" : "Call", "package" : "com.symbol.wfc.voice", "intent" : "Intent", "extraKey" : "KEY" }
  ],

Secure Notifications

Settings for Custom Notifications support.

Key Description
enabled boolean true/false to enable/disable the secure notifications feature. If the key is missing, the secure notifications feature will be set to disabled.
enableHeadsUp boolean true/false to enable/disable the heads-up popup feature. If the key is missing, the heads-up popup feature will be disabled.
headsUpTime integer Time in milliseconds to show a high priority heads-up popup the screen. If the key is missing, the headsUpTime will be defaulted to 3 seconds.
blacklist array An array of packages to blacklist. Notifications from packages in this list will be suppressed. If the list is empty or the key is missing then no notifications are blacklisted.
whitelist array An array of packages to whitelist. If used, only packages that appear in this list will be allowed to display notifications. If the list is empty then no notifications will be shown. If this field is ommitted then all notifications will be presented unless they are specified in the blacklist.

Example:

    "secureNotifications" : {
        "enabled": true,
        "enableHeadsUp": true,
        "headsUpTime": 2000,
        "whitelist": ["com.example.phone", "com.example.music"],
        "blacklist": ["com.example.browser"]
    }

External Site Info Finder

Settings when using a custom Site Location finder service. If both parameters are set, the Launcher will use this service to obtain the siteId instead of the built-in lookup system. See Automated Site Information Service for additional information.

Field Description
packageName string The package name/application id of the application that contains the custom service.
resourceId string The fully qualified name of the Android service to be called e.g. 'com.bluefletch.services.CustomSiteService'.

Example:

  "externalSiteInfoFinder": {
    "packageName": "com.bluefletch.customservice",
    "serviceName": "com.bluefletch.customservice.CustomSiteFinder"
  }

Orientation Override

Settings that change the BlueFletch Launcher orientation based on the device model. By default the Launcher will be set to portrait if the display is less than 6" and will default to landscape if the screen is greater than 6". This setting can be used to force the Launcher to use portrait on a tablet or vice versa.

The configuration is represented as a set of key/value pairs, with the model of the device being the key, and the value being the desired orientation.

Field Description
key string The device model.
value string The desired orientation, either 'portrait' or 'landscape'

Example:

Shows how to set device model ET51 and TC700H to portrait mode.

  "orientationOverride": {
        "TC700H": "portrait",
        "ET51": "portrait"
  }

auth_adal

ADAL IDP settings.

Field Description
authority string Configured resource ID for this application
resourceId string Configured resource ID for this application
clientId string Configured Client ID for this application
redirectUri string Configured callback URL for this application
claim_userId string Passthrough field containing the userID (e.g. unique_name)
claim_username string LDAP passthrough field containing the user's display name
claim_groups string LDAP passthrough field containing the groups (e.g. equivalent to MemberOf)
baseUrl string The base url for the ADFS environment
defaultDomain string Optional, to pre-populate the username field with the domain prefix

auth_okta

OKTA IDP Settings.

Field Description
okta_issuer_uri string The configured Issuer URI for the identity provider
okta_client_id string The configured client ID for this application
okta_redirect_uri string The configured redirect callback URI for this application
okta_scopes string The scopes where this authentication applies
auth_location_field string An optional setting that tells authorization which field in the auth provider response contains Location information. Used in conjunction with auth_location_regex.
auth_location_regex string A regular expression to extract the location value from the location field. Used in conjunction with auth_location_field
auth_group_field string An optional setting that tells authorization which field in the auth provider response contains Group information. Used in conjunction with auth_group_regex.
auth_group_regex string A regular expression to match against the group information.
auth_group_regex_true string If the regular expression auth_group_regex returns true (found a value), will use this group value.
auth_default_group string A default group
auth_role_field string An optional setting that tells authorization which field in the auth provider response contains User ROLE information. Used in conjunction with auth_role_regex. Available AUTH 1.1.x
auth_role_regex string A regular expression to match against the role information
auth_role_regex_true string If the regular expression auth_role_regex returns true (found a value), will use this Role value.
auth_default_role string A default user role

Full Example

{
  "configVersion" : "example configuration",
  "group_inclusion" : {
    "MANAGER_ROLE" : ["Managers", "Associates", "*"],
    "Associates" : ["Associates", "*"],
    "*" : ["*"]
  },
  "layouts" : {
    "CPP" : [
      {  "package" : "com.symbol.wfc.pttpro" },
      {  "package": "com.bluefletch.ems.support" }
    ],
    "MPP" : [
      {  "package" : "com.symbol.wfc.pttpro" },
      {  "package": "com.bluefletch.ems.support" }
    ],
    "Managers":[
      {
        "label" : "Vision Settings",
        "package": "com.bluefletch.ems.vision",
        "activity": "PreferenceActivity"
      },
      {
        "label" : "Vision Training",
        "package": "com.bluefletch.ems.vision",
        "activity": "FaceTrainActivity"
      },
      {
        "package": "com.bluefletch.go"
      }
    ],
    "ADMIN":[
      {
        "package": "com.bluefletch.ems.support",
        "nfcEnable": true
      },
      {
        "package": "com.android.settings",
        "nfcEnable": true
      }
    ],
    "Associates":[
      {  "package" : "com.symbol.wfc.pttpro" },
      {
        "label" : "Vision Settings",
        "package": "com.bluefletch.ems.vision",
        "activity": "PreferenceActivity"
      },
      {
        "label" : "Vision Training",
        "package": "com.bluefletch.ems.vision",
        "activity": "FaceTrainActivity"
      },
      {
        "package": "com.bluefletch.ems.support",
        "label": "Support"
      },
      {
        "package": "com.android.calculator2"
      }
    ],
    "*": [
      {
        "package": "com.staylinked.AndroidClient"
      },
      {
        "package": "com.android.chrome"
      },
      {
        "package" : "com.google.android.gm"
      },
      {
        "package" : "com.google.android.calendar"
      },
      {
        "package" : "com.bluefletch.ems.testpermissions"
      },
      {
        "label" : "Yahoo News",
        "url" : "https://news.yahoo.com",
        "icon" : "/sdcard/DCIM/icons/news.png",
        "showUrl" : false,
        "showTitle" : false,
        "allowCookiePreview" : false,
        "fixOrientation" : false
      },
      {
        "package": "com.bluefletch.ems.support"
      },
      {
        "label" : "Tools Folder",
        "contents":[{
          "package":"com.bluefletch.ems.messaging"
        },{
          "package":"com.bluefletch.acc.themerapp"
        },
          {
            "package": "com.bluefletch.ems.tester"
          },
          {
            "package" : "com.bluefletch.ems.support",
            "label": "Strapper",
            "icon" : "/sdcard/DCIM/icons/soccer.jpeg"
          },
          {
            "package" : "com.symbol.datawedge",
            "label": "Wedge"
          },
          {
            "package" : "com.symbol.tool.stagenow"
          },
          {
              "label" : "WebSites",
              "contents":[
                {
                  "label" : "Google",
                  "url" : "https://google.com",
                  "icon" : "/sdcard/DCIM/icons/google.png",
                  "showUrl" : false,
                  "showTitle" : false,
                  "allowCookiePreview" : false,
                  "fixOrientation" : false
                },
                {
                  "label" : "Google",
                  "url" : "https://google.com",
                  "icon" : "/sdcard/DCIM/icons/google.png",
                  "showUrl" : false,
                  "showTitle" : false,
                  "allowCookiePreview" : false,
                  "fixOrientation" : false
                },{
                  "label" : "Yahoo News",
                  "url" : "https://news.yahoo.com",
                  "icon" : "/sdcard/DCIM/icons/news.png",
                  "showUrl" : false,
                  "showTitle" : false,
                  "allowCookiePreview" : false,
                  "fixOrientation" : false
                }
              ]
          }
        ]
      },
      {
        "label" : "Google",
        "url" : "https://google.com",
        "icon" : "/sdcard/DCIM/icons/google.png",
        "showUrl" : false,
        "showTitle" : false,
        "allowCookiePreview" : false,
        "fixOrientation" : false
      },
      {
        "label" : "One item",
        "contents":[
          {
            "label" : "Google",
            "url" : "https://google.com",
            "icon" : "/sdcard/DCIM/icons/google.png",
            "showUrl" : false,
            "showTitle" : false,
            "allowCookiePreview" : false,
            "fixOrientation" : false
          },
          {
            "package": "com.android.chrome"
          }
        ]
      },
      {
        "label" : "Two items",
        "contents":[
          {
            "label" : "Google",
            "url" : "https://google.com",
            "icon" : "/sdcard/DCIM/icons/google.png",
            "showUrl" : false,
            "showTitle" : false,
            "allowCookiePreview" : false,
            "fixOrientation" : false
          },
          {
            "package" : "com.bluefletch.ems.support"
          }
        ]
      },
      {
        "label" : "Three items",
        "contents":[
          {
            "label" : "Google",
            "url" : "https://google.com",
            "icon" : "/sdcard/DCIM/icons/google.png",
            "showUrl" : false,
            "showTitle" : false,
            "allowCookiePreview" : false,
            "fixOrientation" : false
          },
          {
            "package" : "com.bluefletch.ems.support"
          },
          {
            "package" : "com.bluefletch.ems.support"
          }
        ]
      }
    ]
  },
  "groups": {
    "Managers":[
      "com.bluefletch.(.*)",
      "com.bluefletch.go",
      "com.android.settings"
    ],
    "Associates":[
      "com.android.dialer",
      "com.android.contacts",
      "com.android.calendar",
      "com.android.email",
      "com.android.browser",
      "com.bluefletch.ems(.*)",
      "com.android.gallery3d",
      "com.bluefletch.demoscanreceiver"
    ],
    "*":[
      "(.*)",
      "com.bluefletch.ems.support",
      "com.bluefletch.acc.themerapp",
      "com.android.calculator2",
      "com.cisco.anyconnect.vpn.android.avf",
      "BlueFletch",
      "Auth",
      "All Symbol",
      "Heads Up"
    ]
  },
  "fullyHidden":[
    "com.bluefletch.ems.auth"
  ],
  "settings":{
    "activateSearchBar":true,
    "idleTimeInMinutes": 5,
    "maxSessionTimeInMinutes": 120,
    "requireAuthOnScreenOn" : true,
    "useFaceRecognition" : true,
    "adminPassword" : "",
    "enableNotifications" : true,
    "enableNotificationsAlwaysOn" : true,
    "brokerUrl" : "tcp://ems-notifications-staging.bluefletch.com:1883",
    "enableHeadsUpNotifications" : true,
    "headsUpTimeoutInSeconds" : 4,
    "receiveOfflineMessages" : true,
    "useEnhancedMessaging" : true,
    "muteNotificationOnCall" : true,
    "autoSubscribeWithSession" : true,
    "useAppEnabler" : false,
    "ldap_hostname" : "contoso.domain.local",
    "ldap_port" : 389,
    "ldap_domain" : "@contoso.local",
    "ldap_rootDN" : "DC=contoso,DC=local",
    "nfcLoginSupport" : true,
    "nfcDataTypes" : "data/com.bluefletch.ems.auth",
    "okta_client_id": "adfasdfa-6607-asdfasdf0137-b038-06391559b9e8132312",
    "okta_redirect_uri": "com.bluefletch.launcher:/callback",
    "okta_scopes" : "[\"openid\", \"profile\", \"name\", \"groups\", \"email\"]",
    "okta_issuer_uri": "https://openid-connect.onelogin.com/oidc",
    "auth_default_group" : "Associates",
    "auth_group_field" : "title",
    "auth_group_regex" : "(?i)leader$",
    "auth_group_regex_true" : "Managers",
    "auth_location_field" : "custom_fields.deptnum",
    "auth_location_regex" : "(\\d+)",
    "device_lost_hours" : 12,
    "vision_threshold" : 0.45,
    "vision_attempts" : 20,
    "turnOffNFC" : true,
    "turnOnAtLogin" : true,
    "lockInMotion" : true,
    "lockInMotionConfidence" : 50,
    "disableRecents" : false,
    "unsecuredDeviceTimeoutInSecs": 30,
    "unsecuredDeviceEffects": true
  },
  "luggageTag": {
    "enable": true,
    "thresholdInMinutes": 30,
    "logo": "https://www.image.com/url/to/logo.png",
    "line1": "123 Blue Fletch Street",
    "line2": "Atlanta, GA 45678",
    "email": "help@bluefletch.com",
    "phoneNumber": "(855) 529-6349",
    "unlockPassword": "936A185CAAA266BB9CBE981E9E05CB78CD732B0B3280EB944412BB6F8F8F07AF",
    "alarmLoopInMinutes": 10
  },
  "approvedNetworks": [
    "office-wifi-1",
    "office-wifi-2",
  ],
  "keyboard": {
    "hapticFeedback" : "hapticClick",
    "bigButtonText" : false,
    "alphanumeric" : true,
    "keyPreview" : false
  },
  "browser" : {
    "showUrl" : false,
    "showTitle" : false,
    "allowCookiePreview" : false,
    "fixOrientation" : false
  },
  "defaultSession" : {
    "userId" : "",
    "userName" : "",
    "groups" : "*",
    "location" : "992"
  },
  "notifications" : [
    {
      "brokerId" : "deviceManager",
      "url": "tcp://ems-notifications-prd.bluefletch.com:1883",
      "name" : "Device ",
      "enableOrganizationGroup" : true,
      "useEnhancedMessaging" : true,
      "muteNotificationsOnCall" : true,
      "notificationAcquireWakelocks" : true,
      "receiveOfflineMessages" : true,
      "enableNotificationsAlwaysOn" : true,
      "enableHeadsUpNotifications" : true
    },{
      "brokerId" : "StoreTest",
      "url": "tcp://ems-notifications-prd.bluefletch.com:1883",
      "name" : "Store",
      "enableOrganizationGroup" : true,
      "useEnhancedMessaging" : true,
      "muteNotificationsOnCall" : true,
      "notificationAcquireWakelocks" : true,
      "receiveOfflineMessages" : true,
      "enableNotificationsAlwaysOn" : false,
      "enableHeadsUpNotifications" : true
    }
  ],
  "customField" : {
    "format" : "{Extension} - {Department}",
    "source" : [
        {
            "pathfile": "/sdcard/Download/extension_dept.txt",
            "regex": "Ext=(.*)",
            "name": "Extension"
        },
        {
            "pathfile": "/sdcard/Download/extension_dept.txt",
            "regex": "Dept=(.*)",
            "name": "Department"
        }
    ]
  },
  "patterns" : [
    {"pattern": "^[0-9]{12}$", "displayPrefix" : "Lookup", "package" : "com.bluefletch.acc.itemlookup", "intent" : "Intent", "extraKey" : "SEARCH_TEXT" },
    {"pattern": "^[0-9]{12}$", "displayPrefix" : "Lookup", "package" : "com.bluefletch.demoscanreceiver", "intent" : "Intent", "extraKey" : "SCAN_TEXT" },
    {"pattern": ".*", "displayPrefix" : "Open", "package" : "com.bluefletch.retail.iteminquiry", "intent" : "Intent", "extraKey" : "KEY" },
    {"pattern": "^[0-9]{10}$", "displayPrefix" : "Call", "package" : "com.android.dialer", "intent" : "Intent", "extraKey" : "KEY" },
    {"pattern": "^[0-9]{10}$", "displayPrefix" : "Call", "package" : "com.android.dialer", "intent" : "Intent", "extraKey" : "KEY" },
    {"pattern": "^[0-9]{12}$", "displayPrefix" : "Lookup", "package" : "com.bluefletch.demoscanreceiver", "intent" : "Intent", "extraKey" : "SCAN_TEXT" },
    {"pattern": "^(\\d{4})?$", "displayPrefix" : "Call", "package" : "com.android.dialer", "intent" : "Intent", "extraKey" : "KEY" }
  ],
  "extendedAttributes" : {
    "gateway_auth_url" : ""
  },
 "theme" : {
    "enable" : "true",
    "logo" : "/sdcard/Download/ems/bsb_bikes_logo.png",
    "darkTheme" : true,
    "wallpaperImage" : "messe",
    "duoToneWhite" : "#006497",
    "duoToneBlack" : "#002442",
    "blurRadius" : 5,
    "blurPasses" : 0,
    "folderBackgroundColor" : "#AAAAAA",
    "wallpaperImage_lock" : "topology",
    "duoToneWhite_lock" : "#006497",
    "duoToneBlack_lock" : "#002442",
    "blurRadius_lock" : 5,
    "blurPasses_lock" : 0
  },
  "secureNotifications" : {
    "enabled": true,
    "enableHeadsUp": true,
    "headsUpTime": 2000,
    "whitelist": ["com.example.phone", "com.example.music"],
    "blacklist": ["com.example.browser"]
  },
  "emsSupportTool" : {
    "orgId": "asdf-asdf-asdf"
  },
  "protectedList": [
  ],
  "disablePackages": [
  ],
  "intents" : {
    "login" : [],
    "logout":[],
    "boot" : [],
    "uncradle": [],
    "cradle": [],
    "screenOn": []
  },
  "license" : "dkas;lsad;ladjl;asd;io3489043lkasdlk;dxvoipc oic kqw4k439-xvknzcxvoip4r934ket9",
  "orientationOverride": {
        "TC700H": "portrait",
        "ET51": "portrait"
  }

}