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. For more control, use "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.
settings object Key Value pairs of settings that control processing. See Settings for details.
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 tool processing. See Support Tool 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.

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.
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.
useFaceRecognition 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.0)
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 integar 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 integar 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
distanceInMeters int When using the Site Information Service, the radius distance in meters for GPS Location matching
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)
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

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 the logged has access. Example: manager, associate. Each GROUP has a collection of Application, Folder, and/or Shortcuts. See Application Object, Shortcut Object , Folder 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- ]
    },

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)
icon string Represents a icon to overvide the default application image. Ie. /sdcard/DCIM/icons/logo.png (optional)

Example:

    {
        "label" : "BlueFletch",
        "url" : "https://bluefletch.com",
        "icon" : "/sdcard/DCIM/icons/bluefletch_logo.png"
    },
    {
        "package": "com.android.calculator2"
    },
    {
        "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)

Example:

{
    "label" : "BlueFletch",
    "url" : "https://bluefletch.com",
    "icon" : "/sdcard/DCIM/icons/bluefletch_logo.png"
}

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"
                    }
                ]
            }

        ]
    }

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.

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.
accentColor string A hex code for a company specific accent color.

Example:

"theme" : {
        "enable" : "true",
        "logo" : "/sdcard/Download/ems/bsb_bikes_logo.png"
    }

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" }
  ],

auth_adal

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)

auth_okta

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"
      },
      {
        "package": "com.android.settings"
      }
    ],
    "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"
      },
      {
        "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"
                },
                {
                  "label" : "Google",
                  "url" : "https://google.com",
                  "icon" : "/sdcard/DCIM/icons/google.png"
                },{
                  "label" : "Yahoo News",
                  "url" : "https://news.yahoo.com",
                  "icon" : "/sdcard/DCIM/icons/news.png"
                }
              ]
          }
        ]
      },
      {
        "label" : "Google",
        "url" : "https://google.com",
        "icon" : "/sdcard/DCIM/icons/google.png"
      },
      {
        "label" : "One item",
        "contents":[
          {
            "label" : "Google",
            "url" : "https://google.com",
            "icon" : "/sdcard/DCIM/icons/google.png"
          },
          {
            "package": "com.android.chrome"
          }
        ]
      },
      {
        "label" : "Two items",
        "contents":[
          {
            "label" : "Google",
            "url" : "https://google.com",
            "icon" : "/sdcard/DCIM/icons/google.png"
          },
          {
            "package" : "com.bluefletch.ems.support"
          }
        ]
      },
      {
        "label" : "Three items",
        "contents":[
          {
            "label" : "Google",
            "url" : "https://google.com",
            "icon" : "/sdcard/DCIM/icons/google.png"
          },
          {
            "package" : "com.bluefletch.ems.support"
          },
          {
            "package" : "com.bluefletch.ems.support"
          }
        ]
      }
    ]
  },
  "groups": {
    "Managers":[
      "com.symbol.datawedge",
      "com.bluefletch.(.*)",
      "com.bluefletch.go",
      "com.symbol.(.*)",
      "com.android.settings"
    ],
    "Associates":[
      "com.android.dialer",
      "com.symbol.wfc.voice",
      "com.android.contacts",
      "com.android.calendar",
      "com.android.email",
      "com.android.browser",
      "com.symbol.(.*)",
      "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",
      "Symbol tools",
      "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
  },
  "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,
      "mqttUserName" : "admin",
      "mqttPassword" :  "V4E0CTsCt2wt8I7kAdcM9w==",
      "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,
      "mqttUserName" : "admin",
      "mqttPassword" :  "V4E0CTsCt2wt8I7kAdcM9w==",
      "enableNotificationsAlwaysOn" : false,
      "enableHeadsUpNotifications" : true
    }
  ],
  "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" }
  ],
  "extendedAttributes" : {
    "gateway_auth_url" : ""
  },
  "theme": {
    "enable": true,
    "logo": "",
    "background": "",
    "accentColor": "",
    "lookForOverrideFile": true
  },
  "emsSupportTool" : {
    "orgId": "asdf-asdf-asdf"
  },
  "protectedList": [
    "com.symbol.wfc.pttpro"
  ],
  "disablePackages": [
  ],
  "intents" : {
    "login" : [
      {
        "action": "android.intent.action.VIEW",
        "package": "com.symbol.wfc.pttpro",
        "data": "pttpro://activatewithesn",
        "flags": 1,
        "typeIntent": "a"
      }

    ],
    "logout":[
      {
        "action": "com.symbol.wfc.pttpro.ACTION_SIGN_OUT",
        "extras":{ "pass_key":"chinchilla" },
        "typeIntent": "b"
      },{
        "action": "wfc.voice.SIGN_OUT",
        "extras":{ "change":"0" },
        "typeIntent": "b"
      }],
    "boot" : [],
    "uncradle": [],
    "cradle": [],
    "screenOn": []
  },
  "license" : "dkas;lsad;ladjl;asd;io3489043lkasdlk;dxvoipc oic kqw4k439-xvknzcxvoip4r934ket9"

}