> For the complete documentation index, see [llms.txt](https://docs.bluefletch.com/bluefletch-enterprise/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.bluefletch.com/bluefletch-enterprise/product-guides/device-applications/wear-launcher/features.md).

# Features

## Overview

The Wear Launcher is a purpose built launcher for wearable devices, such as the Zebra WS301 and WS50. Its primary purpose is to allow the user to authenticate with Workcloud Sync using a larger host device, such as a CC610, instead of typing credentials in manually on the smaller devices.

## User Guide: An Example Flow & Config

When the user first grabs the device off of the dock, they are presented with the Wear Launcher's version of the Open Zone, which indicates the user should scan a QR code to initiate the login process. The flow is as follows:

1. The user begins by signing in to the host device, such as a CC610. Upon successful authentication, they are presented with a QR Code.
2. The user then scans the QR code with the wearable device, such as the WS301.
3. Based on the QR data, the host and the wearable will perform an authentication handshake. The host provides the session data to the wearable.
4. The wearable sets the user's session. It then sends an acknowledgement to the host device that it has signed in successfully.
5. The host device then signs out and returns to the open zone to await the next user.
6. The wearable switches to an authenticated view and then launches and signs into Workcloud Sync using the token received from the messaging payload.
7. When the user is done with the device, they sign out either by pressing the logout button in the authenticated view, or returning the wearable device to the dock. This initiates the signout process in Sync and returns the Wear Launcher to the open zone.

**Example Wearable launcher.json:**

```json
    {
  "configVersion": "2025.02.17.1",
  "license": "...",
  "layouts": {
    "*": [
      {
        "label": "Zebra Voice Assistant",
        "package": "com.symbol.datawedge"
      },
      {
        "label": "Sync",
        "package": "com.zebra.workcloud.sync"
      },
      {
        "label": "Support App",
        "package": "com.bluefletch.ems.staging.support"
      },
      {
        "label": "Messaging",
        "package": "com.bluefletch.ems.messaging"
      }
    ]
  },
  "settings": {
    "useLowBatteryMode": true,
    "lowBatteryModeStartLevel": 10,
    "lowBatteryModeEndLevel": 20,
    "hideNotificationsOpenZone": false,
    "idleTimeInMinutes": 361,
    "maxSessionTimeInMinutes": 480,
    "useSiteInfoService": true,
    "refreshSiteOnStartup": true,
    "activateSearchBar": true,
    "onCradleIgnoreLogout": false,
    "cradleLogoutDelayInSeconds": 10,
    "disableRecents": false,
    "lockInMotion": false,
    "device_lost_hours": 36,
    "authBrokerCertVersion": 0,
    "logLevel": "debug"
  },
  "disablePackages": [
    "org.chromium.chrome.stable"
  ],
  "emsSupportTool": {
    "orgId": "...",
    "eventUrl" : "https://ems-pb-api.bluefletch.com/eventsAPI/apiv1/",
    "logUrl" : "https://ems-pb-api.bluefletch.com/",
    "samplingTimer": 30
  },
  "extendedAttributes": {
    "apiUrl": "https://ems-services-api.bluefletch.com",
    "apiKey": "...",
    "crmStoreId": "1001",
    "coordinates_lat": "37.001",
    "coordinates_long": "-77,66124",
    "wearableHostUseSync": true,
    "wearableHostLogoutOnSuccess": true,
    "tenant_id" : "...",
    "tenant_url" : "...",
	  "sync_logout_key" : "...",
	  "provisioning_uri" : "..."
  }
}
```

**Example host device launcher.json:**

```json
    {
    "configVersion": "2025.5.29.2_BSB_TEST2",
    "license": "...",
    "group_inclusion": {
        "ZebraAssociates": [
            "Operations"
        ],
        "*": [
            "*"
        ]
    },
    "layouts": {
        "Operations": [
           { 
              "package" : "com.zebra.workcloud.sync"
           }
        ],
        "*": [
            {
                "columnSpan": 3,
                "rowSpan": 1,
                "widgetId": "simple-spacer-1",
                "widgetType": "space"

            },
            {
                "columnSpan": 3,
                "rowSpan": 2,
                "widgetId": "simple-text-1",
                "widgetType": "text",
                "widgetParams": {
                    "icon": "assets:loginIcon2",
                    "iconSize": "400",
                    "backgroundColor": "${launcherState.theme.accentColor}",
                    "onItemClick": {
                        "typeIntent": "a",
                        "action": "com.bluefletch.action.LOGIN",
                        "category": "android.intent.category.LAUNCHER",
                        "package": "com.bluefletch.ems.auth",
                        "class": "com.bluefletch.ems.auth.LoginActivity",
                        "extras": {
                            "EMS_LAUNCHER_PACKAGENAME": "com.bluefletch.ems.emm.launcher",
                            "LOGIN_HINT": ""
                        },
                        "flags": 335544320
                    }
                }
            }
        ]
    },
    "settings": {
        "idleTimeInMinutes": 120,
        "maxSessionTimeInMinutes": 480,
        "activateSearchBar": false,
        "enableNotifications": true,
        "requireAuthOnScreenOn": false,
        "useSecondaryAuth": "none",
        "secondaryAuthPinLength": 4,
        "secondaryAuthRequired": false,
        "alternateSecondaryAuth": "pin",
        "authBrokerService": false,
        "useSiteInfoService": true,
        "disallowSiteChange": false,
        "refreshSiteOnStartup": false,
        "disallowLoggedInSiteChange": false,
        "logLevel": "debug",
        "clearAppDataOnLogout": true,
        "clearAppDataIncludeList": "com.microsoft.teams,com.microsoft.office.outlook",
        "clearAppDataExcludeList": "com.bluefletch.ems.support,com.bluefletch.ems.epm,com.bluefletch.chat,com.bluefletch.ems.browser,com.bluefletch.ems.deviceinformation,com.bluefletch.ems.auth,com.bluefletch.grapheneos.pdfviewer",
        "screenTimeout": 300,
        "useLowBatteryMode": false
    },
    "assets": {
        "loginIcon": "https://storage.googleapis.com/bluefletch-ems-resources/demo/icons/pngtree-vector-login-icon-login-design-shadow-vector-png-image_13266424.png?made=1766973809106000",
        "whiteWallpaper2": "https://img.freepik.com/premium-photo/abstract-white-background-grunge-texture-ai-generative_728418-560.jpg?made=1766973809106000",
        "loginIcon2": "https://storage.googleapis.com/bluefletch-ems-resources/demo/icons/login.png?made=1766973809106000",
        "whiteWallpaper": "https://storage.googleapis.com/bluefletch-ems-resources/demo/wallpapers/nordwood-themes-KcsKWw77Ovw-unsplash.jpg?made=1766973809106000"
    },
    "layoutSettings": {
        "columns": 3,
        "tabletColumns": 3,
        "iconSize": "large",
        "showLabel": true,
        "boldTypeLabel": true,
        "labelFontSize": 14,
        "quickStartIconSize": ""
    },
    "customField": {
        "format": "${config.ex.deviceId}"
    },
    "keyManagement": {
        "enabled": false,
        "baseUrl": "https://ems-services-api-demo.bluefletch.com/",
        "refreshIntervalInSeconds": 280
    },
    "notifications": [
    ],
    "header": [
        {
            "criteria_OR": [
                {
                    "field": "_${session.userId}",
                    "pattern": "^_$"
                }
            ],
            "id": "default_openzone",
            "layout": {
                "columnSpan": 4,
                "rowSpan": 1,
                "widgetId": "openzone_toolbar",
                "widgetParams": {
                    "toolbarTitle": "WS50 Login",
                    "backgroundColor": "${launcherState.theme.accentColor}"
                },
                "widgetType": "toolbar",
                "wifiSettingsEnabled": false
            }
        },
        {
            "criteria_OR": [
                {
                    "field": "_${session.userId}",
                    "pattern": "^_.+$"
                }
            ],
            "id": "default_authorized",
            "layout": {
                "columnSpan": 4,
                "rowSpan": 1,
                "widgetId": "authorized-toolbar",
                "widgetParams": {
                    "toolbarTitle": "WS50 Login",
                    "backgroundColor": "${launcherState.theme.accentColor}"
                },
                "widgetType": "toolbar",
                "wifiSettingsEnabled": false
            }
        }
    ],
    "intents": {
        "login": [
		{
          "typeIntent" : "d",
          "data" : "2000"
        },
            {
                "class": "com.bluefletch.ems.baseauth.wearable.HostActivity",
                "extras": {
                    "wearableLayouts": "${launcherState.wearableLayouts}"
                },
                "flags": 1,
                "package": "com.bluefletch.ems.auth",
                "typeIntent": "a"
            }
        ],
        "postLogout": [
            {
                "action": "com.bluefletch.ems.browser.CLEAR_COOKIES",
                "package": "com.bluefletch.ems.emm.browser",
                "typeIntent": "b"
            },
            {
                "action": "CLEAR_STORAGE",
                "package": "com.bluefletch.ems.emm.browser",
                "typeIntent": "p"
            }
        ],
        "logout": [],
        "uncradle": [],
        "cradle": [
            {
                "action": "android.intent.action.MAIN",
                "package": "com.bluefletch.launcher",
                "category": "android.intent.category.HOME",
                "flags": 1,
                "typeIntent": "a"
            }
        ],
        "screenOn": []
    },
    "theme": {
        "enable": true,
        "darkTheme": false,
        "logo": "assets:BFLogo",
        "wallpaperImage": "assets:whiteWallpaper2"
    },
    "emsSupportTool": {
        "orgId": "...",
        "eventUrl" : "https://ems-pb-api.bluefletch.com/eventsAPI/apiv1/",
        "logUrl" : "https://ems-pb-api.bluefletch.com/",
        "installAppsUncradled": true,
        "allowPhone": true,
        "findMeAutoEnabled": true,
        "findMePlayMedia": true,
        "findMePlayInternalMedia": true,
        "findMeIgnoreScreenState": true,
        "activeLocationTracking": true,
        "allowSpeedTestUI": true
    },
    "appConfig": {
        
    },
	"browser": {
            "showTitle": true,
            "exitBrowserOnIntentCall": true,
            "appLinkPaths": "",
            "convertAppLinks": false,
            "allowCameraAccess": true
    },
    "auth_msal": {
        "client_id": "...",
        "redirect_uri": "msauth://com.bluefletch.ems.auth/KUKEusfKtqAOu9UB6jgjtTMKYas%3D",
        "authority_type": "AAD",
        "authorization_user_agent": "BROWSER",
        "broker_redirect_uri_registered": false,
        "shared_device_mode_supported": false,
        "scopes": "openid email profile User.Read GroupMember.Read.All",
        "default_group": "Associates",
        "authority_url": "https://login.microsoftonline.com/7d90cee7-3a02-4900-bd04-f8f6c55cf2e1",
        "audience_tenant_id": "..."
    },
    "extendedAttributes": {
        "apiUrl": "https://ems-services-api.bluefletch.com",
        "apiKey": "...",
        "crmStoreId": "1001",
        "wearableHostUseSync": true,
        "wearableHostLogoutOnSuccess": true,
        "tenant_id" : "...",
        "tenant_url" : "..."
    }
}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.bluefletch.com/bluefletch-enterprise/product-guides/device-applications/wear-launcher/features.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
