Launcher can match certain values against regular expressions to customize intents and groups
Overview
Filtering of custom intents and definition of implied groups can be accomplished with and/or criteria and regular expressions (regex). A criterion checks the value stored in a replacement variable from the device, Launcher, the configuration file, or session object against a regex pattern to determine what device behavior or layout should apply in a specific scenario.
Technical Guide
Criteria Arrays
Field
Description
criteria_OR
array Filters for instances where at least one field matches its pattern.
criteria_AND
array Filters for instances where all fields must must match their respective patterns.
Both "criteria_OR" and "criteria_AND" arrays need to be included in an object, even if one is empty.
Criteria Object Parameters
Field
Description
field
string A replacement variable, written in the format "_${replacement variable}" (e.g. "_${device.MODEL}").
pattern
string The regular expression that is desired to match the field's content.
Examples
Criteria for Custom Intent Filtering
"intents": {
"boot": [
// Run a StageNow XML on boot for all device models starting with "TC":
{
"typeIntent": "p",
"action": "XML",
"data": "file/path/to/stageNowFile.xml",
"criteria_OR": [
{
"field": "_${device.MODEL}",
"pattern": "/^TC.*$/"
}
],
"criteria_AND": []
}
],
"cradle": [
// Rotate the Launcher to landscape on cradle for device models starting with "ET" or "CC":
{
"action": "com.bluefletch.launcher.ACTION_ROTATE_LANDSCAPE",
"typeIntent": "p",
"criteria_OR": [
{
"field": "_${device.MODEL}",
"pattern": "/^ET.*$/"
},
{
"field": "_${device.MODEL}",
"pattern": "/^CC.*$/"
}
],
"criteria_AND": []
},
// Mute audio on cradle if device is logged out (no user ID) and is at site 1001:
{
"action": "MUTE_AUDIO",
"typeIntent": "p",
"criteria_AND": [
{
"field": "_${session.userId}",
"pattern": "^_$"
},
{
"field": "_${config.ex.siteId}",
"pattern": "1001"
}
],
"criteria_OR": []
}
]
}
Criteria for Implied Groups
"impliedGroups" : [
// Display this group's layout if the session object's group name contains "Blue" or "BLUE":
{
"group": "ContainsBLUE_or_Blue_Group",
"criteria_OR": [
{ "field": "${session.groups}", "pattern": ".*Blue.*|.*BLUE.*" }
],
"criteria_AND": []
},
// Display this group's layout if the session object's passwordExpiration attribute contains one or more digits:
{
"group": "ContainsNumber_Group",
"criteria_OR": [
{ "field": "${session.ex.passwordExpiration}", "pattern": "[0-9]+" }
],
"criteria_AND": []
},
// Display this group's layout if the session object's group name ends with "Managers"
// OR the site ID is 1133:
{
"group": "EndsWithManager_Or_isSite113_Group",
"criteria_OR": [
{ "field": "${session.groups}", "pattern": ".*Managers$" },
{ "field": "${config.ex.siteId}", "pattern": "1133" }
],
"criteria_AND": []
},
// Display this group's layout if the session object's group name contains "VTV"
// AND the site name is "Pilot"
// OR if group name contains "Managers":
{
"group": "Pilot_VTV_And_Managers",
"criteria_AND": [
{ "field": "${session.groups}", "pattern": ".*VTV.*" },
{ "field": "${config.ex.siteName}", "pattern": "Pilot" }
],
"criteria_OR": [
{ "field": "${session.groups}", "pattern": ".*Managers.*" }
]
}
]