Technical Guide
The table shows the configuration options available in the Support Agent table. It contains settings for the Find Me feature, active location tracking, and custom log file submission. The default values for each setting are laid out. It also provides information on when each configuration was introduced.
Field | Description |
---|---|
eventUrl | string Url to send event information. By default sends to BlueFletch Enterprise. |
eventAuthKey | string Auth token key name, for use with posting events Azure. |
eventAuth | string Auth key value, for use with posting events to Azure. |
logUrl | string Host URL to be used when submitting device application logs. |
loggingLevel | string Internal logging level. info, debug, error, warn. Default is 'info'. |
useSplunk | boolean If desired, the events can be sent directly to Splunk. The eventUrl would need to be overwritten to point to Splunk. This will cause Support tool to send events ONLY to Splunk. Default is false. |
splunkUrl | string Used for forwarding events to Splunk as well as normal event url. This should be the Host/Port of the Splunk Event Collector. |
splunkAuthToken | string Auth token defined within the Splunk Event Collector. |
splunkLogAuth | string Splunk auth token used when submitting application logs to Splunk. |
splunkSource | string If using Splunk, if desired, use this field to identify the source. |
splunkSourceType | string If using Splunk, if desired, use this field to identify the source type. |
splunkApiPath | string If using Splunk, if desired, use this field to identify the additional path into API. Example: 'services/collector/raw'. |
splunkApiLogPath | string The Splunk collector path used when submitting device logs to Splunk. |
ignoreSSLCerts | boolean indicates to ignore SSL Certificate issues during Splunk event posting. Default is false. |
loggingConnection | string Connection information on uploading to AZURE blob storage. |
loggingContainer | string AZURE Blob Storage Container name. |
detailedNetwork | boolean Allows for detailed network reporting. Default is false. |
detailedCellularChanges | boolean Allows for detailed cellular change reporting. Determines if a detailed event of cellular information is reported when cellular strength changes. |
installAppsUncradled | boolean If the Device is Un-cradled, and this flag is true, will send the Installed Applications event. Default is true. |
installAppsOnBoot | boolean During Reboot processing, if the device is un-cradled, and this flag is true, will send the Installed Applications event. Default is true. |
heartBeatTimerMinutes | integer Heartbeat event is fired every x minutes. The value of this parameter can not be less than 10 minutes. Default is 20. |
samplingTimer | integer Application sampling timer. Timer runs to track which application is in the foreground. Value is represented in seconds. Default is 1800. |
lowStorageTimer | integer Alarm setting for low storage checking. The number of seconds before firing the alarm. Default is 14400. |
collectTopBandwidthHour | integer The hour of the day when Topbandwidth event should be sent. Default is 3. |
collectTopBandwidth | boolean Should the topbandwitdh event be sent. Default is false. |
maxReturnedBackgroundProcs | integer Number of background processes to track. Used within UI display processing. Default is 5. |
maxDaysToSave | integer Max Days to keep event data. Value is represented in days. Default value is 31. |
maxDaysEventsSave | integer Max Days to keep Non-Posted Event data. If no Network or no Org ID for 10 days, the data is thrown away. Default value is 10. |
eventProcessPhone | boolean If true, Support Tool generates phone events when phone calls are received. |
speedTestUrl | string The URL used for speed test processing. |
speedTestPing | string The URL used for PING during Speed test. |
orgId | string For reporting purposes, the organization Id that the events belong to. |
orgPhone | string Organization support phone number. Displayed within Help Desk UI. |
orgTicketUrl | string Organization Support Ticket URL. Used within Help Desk UI. |
orgTicketBrowser | string Package name for an alternative browser to override the default browser displaying |
helpAdminHash | string Admin password used for Device actions (factory reset, wifi reapply). |
allowPhone | boolean Indicates allow the Help Desk Calling to be used. Default is true. |
dateTimeFormat | string A format string for displaying Date / Time. Marshmallow has a bug that does not allow the user to change the format, this is to get around that bug. Default is "yyyy-MM-dd 'at' HH:mm:ss zzz". |
findMeAutoEnabled | boolean Auto Find Me enabled. Default is true. |
findMePlayMedia | boolean For the Find Me Feature, Play Media (true) or play a Notification Sound (false). Default is true. |
findMePlayInternalMedia | boolean If true, will play the internal Media, otherwise uses the information defined in findMeExtenalMedia. Default is true. |
findMeTimeToPlay | integer For LONG plays, the number of minutes to play. Default is 10. |
findMeTimeToPlayShort | integer For short sound notifications, the number of minutes to play. Short is defined by Low Battery notification or battery notifications under Warning level value. Default is 1. |
findMeExternalMedia | string A path to external media to play during the Find Me notification. |
findMeBatteryLevelWarning | integer The battery level to start sending Find Me notifications and play a Short sound. This is different than the systems Low Battery action. Default is 10. |
findMeLowBatteryExternalMedia | string A path to external media to play during the Low Battery notification. Introduced in 5.15.5. |
findMeIgnoreScreenState | boolean Ignore Screen State. If the value is false, Support Agent will NOT play an alert sound when the screen is on (only a visual message is presented to the user). If the value is true, Support Agent will ignore the screen state and will always play the sound. The default state is set to true. |
findMeMovementThresholdSeconds | integer Wait for given number of seconds of non-movement before playing, 0 to disable. Default is 0 (disabled). |
findMeStopAlertOnMotion | boolean Stop Alerting if Motion. If true and the alert is happening and the device is moving, turn alert off. Default is false. |
findMeAlarmVolume | integer This allows for changing the Find Me alarm volume. Is a value from 50 to 100 and represents percentage of max volume. Default is 100. Introduced in 5.15.5. |
findMeLowBatteryAlarmVolume | integer This allows for changing the Low Battery alarm volume. Is a value from 50 to 100 and represents percentage of max volume. Default is 100. Introduced in 5.15.5. |
activeLocationTracking | boolean Active Location Tracking enabled. Default is true. Introduced in version 5.6.2. |
activeLocationIntervalSeconds | integer If |
activeLocationMinDistance | integer Minimum distance change, in meters, for GPS update to occur. Default is 1. Introduced in version 5.6.2. |
object Defines custom log file submission. Used if desire to upload log files from other applications to Splunk or Azure Blob Storage. | |
allowSpeedTestUI | boolean Used to hide or show the Speed Test button in Dashboard. Default state is set to true. |
submitLogs
The submitLogs table controls the settings for uploading log files from other applications to Splunk or Azure. The table includes settings for enabling or disabling log file submission, specifying the directories to be uploaded, and setting the hours of the day when the log files should be uploaded.
Field | Description |
---|---|
enabled | boolean Are log submission files enabled. Valid values are "true" and "false", defaults to "false". |
alarmEnabled | boolean If should upload log files at a certain time interval. Valid values are "true" and "false", defaults to "false". |
hourOfDayToSend | integer If alarmEnabled, this indicates the hour of the day to send the log files |
sendOnBoot | boolean Should log files be sent on boot of the device. Valid values are "true" and "false", defaults to "false". |
object Array of Log Directory objects, that indicate what should be uploaded. NOTE This only works on Android 10 and below, as Support Application will not have access to parts of the file system. | |
multipleHoursOfDayToSend | string If alarmEnabled, this indicates the hour(s) of the day which logs will be sent between 0 and 23. Based on the device time and repeats daily. |
logdirectories
The logdirectories table stores information about the log files that should be submitted to Splunk or Azure. By configuring the settings in the table, you can ensure that the log files are uploaded to the desired destination at the desired time.
Field | Description |
---|---|
application | string Name of the Application. If sending to splunk will be used as the sourceType. |
location | string Path on the device where the log files exist. NOTE This only works on Android 10 and below, as Support Application will not have access to parts of the file system. |
files | string Name of the file to upload. This can be represented as a regular expressiion. |
extractor | string If a custom extractor is needed to reformat the data. Currently on CSV reformatting is supported. |
Configuring Log File Submissions
In the sample configuration below, you can set when and where the log files are uploaded. If submitLogs is set to true, it will enable log file submission. When log file submission fails, there won't be any notification alert if alarmEnabled is set to false. When the device boots up and sendOnBoot is set to false, log files won't be automatically uploaded. Use the example below as a guide:
Event Information
The Support Application generates different events, with each event containing specific data points. Some data points are common to all events.
Events
The following details the different events that are supported.
applog
A custom application log used by individual applications to indicate an action has occurred.
Field | Data Type | Description |
---|---|---|
airplaneMode | Boolean | Indicates whether the device currently has airplane mode enabled. |
cellularState | String | Indicates the current state of the device's cellular service (i.e., 'CONNECTED' and 'DISCONNECTED'). |
network | Object | Collection of wifi information that includes whether or not wifi is enabled. |
details.tag | String | Defines a category for the applog event occurring (e.g. |
details.message | String | Additional information on the logged event. Often logged JSON data or a brief description such as an error message. |
details.package | String | Package name of the application logging the event. |
appusage
Event indicates the usage of an application. The event is generated when the user changes to another application, and will log the details of the previous application.
Example steps:
User is in Launcher, logs in.
User opens an application A (calculator, or any other app). Uses the app for at least a few seconds.
User goes back to Launcher. The agent should generate an appusage event for the application that was previously opened.
Field | Data Type | Description |
---|---|---|
startTime | Date/Time | Calculated start time of the application launch. |
endTime | Date/Time | Date/Time when application went into background. |
duration | long | Length of time, in seconds, that the application was in the foreground. |
screenOnDuration | long | Length of time, in seconds, that the screen was on while application in foreground. |
packageName | String | Name of the package representing the application. |
packageLabel | String | The display name of an application. |
appusage_history
This Event provides application usage for a time period range.
Field | Type | Description |
---|---|---|
details.message | String | An JSON object with execution time and array of applications. |
The details.message column will contain a JSON object with the begin and end date ranges, and a data array of objects. Each entry in the array will indicate a different application.
batterycycle
Event indicates the battery has cycled.
A battery cycle is calculated during power change. When the battery level goes up, the incrementmental value change is tracked. Once this incremental value equals to 100, it is considered a battery cycle.
bluetoothevent
Event indicating a change in Bluetooth state or pairing status.
Field | Data Type | Description |
---|---|---|
bluetooth | Object | Collection of events with information on Bluetooth state and paired devices. |
details.tag | String | Defines a category for the Bluetooth event occurring: |
bluetooth_le
Event showing BLE information for connected Bluetooth Low Energy devices.
Field | Data Type | Description |
---|---|---|
details.message | String | Contains a JSON representation of data from the BLE device. |
boot
Event indicates the device just booted up. Will start tracking the Settings.
Field | Data Type | Description |
---|---|---|
deviceSettings | Object | Collection of Settings information: |
devicedetails | Object | Collection of OS related information: |
ntpServer | String | IP address of a device's configured NTP server. |
cellularchange
Tracks changes in information or state of the device's cellular service
Field | Data Type | Description |
---|---|---|
airplaneMode | Boolean | Indicates whether the device currently has airplane mode enabled |
cellularState | String | Indicates the current state of the device's cellular service (i.e., 'CONNECTED' and 'DISCONNECTED') |
cellularNetwork | String | The type of the cellular network that the device is using (e.g., 'LTE') |
cellularInfo | String | An array printed as a string that describes the cellular network |
lastCellularLevel | int | Signal level of the cellular network |
wifiInfo | Object | Collection of wifi information that includes whether or not wifi is enabled |
gps | Object | Collection of GPS information that includes whether it's enabled and where the device is |
exception
Event indicates an Exception occurred within the Optiko Agent.
Field | Data Type | Description |
---|---|---|
stackTrace | String | The stack trace of the error |
heartbeat
Event is fired to let the server know that this device is still active. Occurs every 15-30 minutes (configurable).
Field | Data Type | Description |
---|---|---|
airplaneMode | Boolean | Indicates whether the device currently has airplane mode enabled |
cellularState | String | Indicates the current state of the device's cellular service (i.e., 'CONNECTED' and 'DISCONNECTED') |
network | Object | Collection of wifi information that includes whether or not wifi is enabled |
bluetooth | Object | Collection of events with information on Bluetooth state and paired devices. |
installedapplications
Event gives a list of installed user applications. Generated under these conditions:
On initial start of application (silent initialization, device boot), is not connected to power, and installAppsOnBoot is true.
Power connection change, device is discharging, and installAppsUncradled is true.
Field | Data Type | Description |
---|---|---|
appdetails | Array List | Array of objects contain "label", "name" and "ver" of packages installed. |
licensecheck
Event indicates a warning or error with a device license.
location
This event is generated when the Find Device processing is occuring.
lowbattery
To indicate that battery is getting low. System typically invokes when battery level gets below 15%.
lowmemory
To indicate that memory is getting low. onLowMemory at application level.
lowstorage
This event is generated when one of four locations are over 80% used. This usage is check on device Boot, when an application is installed or removed, on request (via SilentInitActivity), and on a timer.
missingpermissions
Event indicates that the Support Application is missing permissions. Introduced in version 5.14.2.
Field | Type | Description |
---|---|---|
details.message | String | An array list of the missing permissions. |
networkevent
Tracks information of current network connection.
Link Properties Information
Describes the properties of a network link. A link represents a connection to a network. It may have multiple addresses and multiple gateways, multiple dns servers but only one http proxy and one network interface.
Field | Data Type | Description |
---|---|---|
dnsServer | List<InetAddress> | List of IP address of DNS servers |
domains | String | The DNS domains search path set for this link |
proxyHost | String | The host of the proxy |
proxyPort | int | The port of the proxy |
proxyExclusionList | String[] | List of hosts for which the proxy is ignored |
interfaceName | String | Interface name for this link |
linkAddresses | ArrayList<LinkInformation> | List of LinkInformation that contains: host InetAddress, host flags, host scope |
routes | ArrayList<RouteInformation> | List of information of all routes set to this link |
Network Information
Field | Data Type | Description |
---|---|---|
detailedState | String | Reports the current fine-grained state of the network. |
extraInfo | String | Report the extra information about the network state, if any was provided by the lower networking layers. |
isAvailable | Boolean | Indicates whether network connectivity is possible. |
isFailover | Boolean | Indicates whether the current attempt to connect to the network resulted from the ConnectivityManager trying to fail over to this network following a disconnect from another network. |
isConnected | Boolean | Indicates whether network connectivity exists and it is possible to establish connections and pass data. |
isRoaming | Boolean | Indicates whether the device is currently roaming on this network. When true, it suggests that use of data on this network may incur extra costs. |
networkType | Integer | Reports the type of network (mobile, wifi, wimax, ethernet, bluetooth) |
state | String | Reports the current coarse-grained state of the network. |
subtype | Integer | Return a network-type-specific integer describing the subtype of the network. |
subtypeName | String | Return a human-readable name describing the subtype of the network. |
typeName | String | Return a human-readable name describe the type of the network, for example "WIFI" or "MOBILE". |
reason | String | Report the reason an attempt to establish connectivity failed, if one is available. |
Wifi Information
Field | Data Type | Description |
---|---|---|
connected | Boolean | Indicates whether network connectivity exists and it is possible to establish connections and pass data. |
hiddenSSID | Boolean |
|
bssid | String | Return the basic service set identifier (BSSID) of the current access point. The BSSID may be null if there is no network currently connected. |
linkSpeed | Integer | Returns the current link speed in Mbps. |
networkId | Integer | Each configured network has a unique small integer ID, used to identify the network when performing operations on the supplicant. |
ssid | String | Returns the service set identifier (SSID) of the current 802.11 network. |
roaming | Boolean | Indicates whether the device is currently roaming on this network. When true, it suggests that use of data on this network may incur extra costs. |
rssi | Integer | Returns the received signal strength indicator of the current 802.11 network, in dBm. |
macAddress | String | Returns device's MAC address. |
connectType | String | Type of network connection. Values are |
connectSubtype | String | Return a human-readable name describing the subtype of the network. |
ipAddress | String | Return device's IP address. |
frequency | Integer | Returns the current frequency in MHz. |
gateway | String | Returns the gateway address. |
dns1 | String | Domain Name Server name. |
dns2 | String | Alternate Domain Name Server name. |
proxy | String | Defines the http proxy configuration. |
savedNetworks | ArrayList<String> | List of SSIDs of saved networks. |
networksession
Event indicates a change in SSID / BSSID. Then event is generated when a Connection Change event occurs.
Field | Data Type | Description |
---|---|---|
startTime | Date/Time | Start Date/time of the connection |
endTime | Date/Time | Date/Time when connection lost |
duration | long | Duration, in seconds, of the connection |
minRssi | long | Minimum Rssi value duration connection |
maxRssi | long | Maximum Rssi value duration connection |
avgRssi | double | Average Rssi value duration connection |
ssid | String | SSID of the Connection |
bssid | String | BSSID of the Connection |
packageadd
Event indicates the package / application has been Added to the system.
Field | Data Type | Description |
---|---|---|
appdetail | contains package Label, Name and the Version |
packageremove
Event indicates the package / application has been removed from the system.
Field | Data Type | Description |
---|---|---|
appdetail | Contains the name of the Package. |
powersession
Event indicating the Charging / Discharging. When a device stops charging (removed from Cradle), this event will be generated indicating the duration of the Charge, begining/ ending Charge, and Rate of Charge per hour. Once the device is begins to charge (placed on Cradle), an event will be generate indicating the Discharge of the battery (duration, beginning/ending charge, rate per hour of discharge).
Use "type" field to determine if a "charge" or "discharge" event session.
Field | Data Type | Description |
---|---|---|
type | String | indicates either a CHARGE or DISCHARGE session |
startTime | Date/Time | Start Date/Time of session |
endTime | Date/Time | Ending Date/Time of session |
duration | long | Length, in seconds, of the session |
startCharge | long | Charge value at the beginning of session |
endCharge | long | Charge value at the end of session |
ratePerHour | double | Rate per hour of the charge or discharge |
projectedHour | long | Projected number of hours to discharge or charge the device |
settingsChange
If any of the Android Settings (USB, Root Access, etc) change from the BOOT of the device, then this event will be sent out.
shutdown
Indicates a device has shutdown normally.
support
Event indicates information concerning logs, storage information, device settings, and device information.
Data Points
Each of the events have the following common data points.
Common
Field | Data Type | Description |
---|---|---|
time | Date | The date/time the event was generated. |
orgId | String | The organization ID to which the device belongs. |
origin | String | Indicates "handheld". |
originModel | String | Device model identifier (e.g. TC21, CT60, etc.). |
version | Integer | Support Agent application version number. |
event | String | The event name. |
deviceId | String | The device serial number. |
userSettings | Map<String, String>, converted to JSON Array | Key/value pairs of user application settings. i.e. StoreNumber, User Id, etc. |
Device Activity details
Some events contain additional device details. These details include the following points: Battery, Network, GPS (location), ScreenState, Foreground APP, and Additional Details (optional).
Field | Data Type | Description |
---|---|---|
foregroundApp | String | Package / Application that is currently in the foreground when event generated |
screenState | String | Screen ON or OFF |
details | Hash Map | Key / value pairs of different data points. Most likely from other applications. |
permissionsAppUsage | Boolean | 1 or 0 to indicate if the Optiko Agent as permissions to use AppUsage data. If the field does not exist, then device does not support application usage permissions. |
activeAdmins | Array List | List of package names that are currently set as Device Administrator applications. Package name strings separated with a comma (e.g. |
accessPoints | Array List | List of the network access points nearest to a device; the results of a WiFi scan via the Support Agent application. |
airplaneMode | Boolean | Indicates whether the device currently has airplane mode enabled |
cellularState | String | Indicates the current state of the device's cellular service (i.e., 'CONNECTED' and 'DISCONNECTED') |
battery | Object | Battery information. See Battery for details. |
gps | Object | GPS information. See GPS for details |
network | Object | Network information. See Network for details |
Battery
Field | Data Type | Description |
---|---|---|
technology | String | battery tech, ex: Li-ion |
connectionState | String | If charging, how is the battery connected: USB, Wireless, etc |
health | String | The health of the battery, as detected by the OS. Good, Bad, etc. |
serialNumber | String | The Battery serial Number |
status | String | Battery status, charging or discharging |
voltage | int | Battery voltage |
temperature | double | Current battery temperature |
charge | double | Current charge on battery |
maxCapacity | double | Maximum charging capacity of device's battery, which registers as fully-charged (e.g. |
BatteryDetail
Field | Data Type | Description |
---|---|---|
manufactureDate | Date | Battery manufacture date. |
partNumber | String | Part number for battery. Prefix is "21-” or “82-” (e.g. |
backupBatteryVoltage | String | Backup battery voltage. |
ratedCapacity | String | Rated capacity of the battery. |
decommissionStatus | String | Decommission status of the battery. |
baseCumulativeCharge | String | Cumulative charge using Zebra charging equipment only. |
noOfChargeCycle | String | Number of charge cycles. |
totalCumulativeCharge | String | Cumulative charge using any (Zebra or non-Zebra) charging equipment. |
secondsSinceFirstUse | String | Number of seconds passed since the battery was placed in a charger/terminal for the first time. |
presentCapacity | String | Maximum amount of charge that could be pulled from the battery under the present discharge conditions if the battery is fully charged. |
healthPercentage | String | Battery health indicator in percentage (0 to 100). |
timeToEmpty | String | Remaining time until the device becomes unusable under current discharge conditions. If the returned value is |
timeToFull | String | Time until battery is fully charged under present charging conditions. If the returned value is |
Bluetooth
Field | Data Type | Description |
---|---|---|
state | String | Bluetooth enabled status; |
device | Array List | Objects consisting of string values for paired devices' |
GPS
GPS Location information
Field | Data Type | Description |
---|---|---|
gpsEnabled | boolean | Is GPS Location enabled |
netEnabled | boolean | Is Network Location enabled |
passiveEnabled | boolean | Is Passive Location enabled |
gpsLat | String | Latitude according to GPS Location |
gpsLong | String | Longitude according to GPS Location |
netLat | String | Latitude according to Network Location |
netLong | String | Longitude according to Network Location |
passiveLat | String | Latitude according to Passive Location |
passiveLong | String | Longitude according to Passive Location |
Network
Field | Data Type | Description |
---|---|---|
connectionSubType | String | battery tech, ex: Li-ion |
connectType | String | Type of network connection. Values are |
connected | boolean | connected (1) or not connected (0) |
ssid | String | Current SSID |
ipAddress | String | AP Ip Address |
linkSpeed | int | Link Speed |
networkId | Int | Network ID |
isRoaming | boolean | Is the device roaming. |
rssi | int | RSSI value, indicates Signal Strength |
hiddenSSID | boolean | Is the SSID Hidden |