- Direct Known Subclasses:
FenceGeotrigger
GeotriggerMonitor
.
A Geotrigger
defines a condition that can be continually monitored in real time. After
the condition is met, the Geotrigger
defines how a GeotriggerNotificationInfo
can be used
to inform the user.
A GeotriggerMonitor
, created with the Geotrigger
, handles monitoring and reporting.
You can create a FenceGeotrigger
describing target areas, covered by spatial rules
such as enter or exit. This type of spatial monitoring is also known as "Geofencing".
If a Geotrigger
is defined in a GeotriggersInfo
, check whether the GeotriggerFeed
is of type
LocationGeotriggerFeed
and, if so, supply a LocationDataSource
to
provide your device location. Call LocationGeotriggerFeed.setLocationDataSource(LocationDataSource)
, passing your
LocationDataSource
; you can retrieve your location data source by calling, for example, LocationDisplay.getLocationDataSource()
.
If a Geotrigger is defined in a GeotriggersInfo
, check whether the
GeotriggerFeed
is of type LocationGeotriggerFeed
and, if so, supply a
LocationDataSource
to provide your device location. Set the
LocationGeotriggerFeed.getLocationDataSource()
to your LocationDataSource
- for example,
using the LocationDisplay.setLocationDataSource(LocationDataSource)
.
- Since:
- 100.12.0
-
Field Summary
-
Method Summary
Modifier and TypeMethodDescriptiongetFeed()
Gets theGeotriggerFeed
that is monitored for changes.Gets a unique ID for the Geotrigger.Gets anArcadeExpression
that controls the notification details when a Geotrigger is met.getName()
Gets the name of the Geotrigger.Gets a list of strings indicating the set of requested actions when a notification is delivered.void
setMessageExpression
(ArcadeExpression messageExpression) Sets anArcadeExpression
that controls notification details when aGeotrigger
is met.void
Sets the name of the Geotrigger.
-
Field Details
-
mFeed
-
mMessageExpression
-
-
Method Details
-
getFeed
Gets theGeotriggerFeed
that is monitored for changes.You can construct a
LocationGeotriggerFeed
from anyLocationDataSource
. Typically, this shows the device location based on GPS, but can be anyLocationDataSource
.- Returns:
- the
GeotriggerFeed
that is monitored for changes - Since:
- 100.12.0
-
getGeotriggerId
Gets a unique ID for the Geotrigger.- Returns:
- a unique ID for the Geotrigger
- Since:
- 100.13.0
-
getMessageExpression
Gets anArcadeExpression
that controls the notification details when a Geotrigger is met.The expression uses the Arcade language to generate notification information that can be:
- a string literal that is the same for all notifications relating to this
Geotrigger
- information that is specific to the attributes of objects that met the
Geotrigger
Geotrigger
condition is met, in order to populate theGeotriggerNotificationInfo.getMessage()
property. Display this message to alert the user that theGeotrigger
condition has been met. Note that the expression cannot be changed when theGeotriggerMonitor
is running.For example, with a
FenceGeotrigger
, using the following expression:"You have " + $fencenotificationtype + " " + $fencefeature.area_name
returns the
GeotriggerNotification.getMessage()
"You have entered Area A"
, where "area_name" is an attribute field on theFenceGeotriggerNotificationInfo.getFenceGeoElement()
.Optionally, the expression can return extra properties in addition to the message. For example, it could produce another string, suitable for logging to a database. To supply additional properties, write an arcade expression that evaluates to a dictionary of key value pairs.
- A value with the key "message" will be used to populate the
GeotriggerNotificationInfo.getMessage()
property. - A value with the key "actions" will populate the
GeotriggerNotificationInfo.getActions()
property. - Any additional key value pairs are returned in the
GeotriggerNotificationInfo.getMessageProperties()
dictionary.
For example, the expression below results in a
GeotriggerNotificationInfo.getMessage()
of: "Hello world" and aGeotriggerNotificationInfo.getActions()
list of either "startTracking" or "stopTracking":
Thevar action = IIf($fencenotificationtype == 'enter', 'stopTracking', 'startTracking'); return { 'message': 'Hello world', 'actions': [ action ] }
ArcadeExpression
must evaluate to either a string or a dictionary; seeArcadeExpression.getReturnType()
. Note that this method —getMessageExpression()
— returns anArcadeExpression
object, rather than a string.For more information on the available profile variables and functions for creating the message expression see the "Geotrigger Notification" profile at https://developers.arcgis.com/arcade/profiles/.
- Returns:
- an
ArcadeExpression
that controls the message when a Geotrigger is met, or null if none - Since:
- 100.12.0
- See Also:
- a string literal that is the same for all notifications relating to this
-
setMessageExpression
Sets anArcadeExpression
that controls notification details when aGeotrigger
is met.The expression uses the Arcade language to generate notification information that can be:
- a string literal that is the same for all notifications relating to this
Geotrigger
- information that is specific to the attributes of objects that met the
Geotrigger
Geotrigger
condition is met in order to populate theGeotriggerNotificationInfo.getMessage()
property. Display this message to alert the user that theGeotrigger
condition has been met. Note that the expression cannot be changed when theGeotriggerMonitor
is running.For example, with a
FenceGeotrigger
, using the following expression:"You have " + $fencenotificationtype + " " + $fencefeature.area_name
returns the
GeotriggerNotificationInfo.getMessage()
"You have entered Area A"
, where "area_name" is an attribute field on theFenceGeotriggerNotificationInfo.getFenceGeoElement()
.Optionally, the expression can return extra properties in addition to the message. For example, it could produce another string, suitable for logging to a database. To supply additional properties, write an arcade expression that evaluates to a dictionary of key value pairs.
- A value with the key "message" will be used to populate the
GeotriggerNotificationInfo.getMessage()
property. - A value with the key "actions" will populate the
GeotriggerNotificationInfo.getActions()
property. - Any additional key value pairs are returned in the
GeotriggerNotificationInfo.getMessageProperties()
dictionary.
For example, the expression below results in a
GeotriggerNotificationInfo.getMessage()
of: "Hello world" and aGeotriggerNotificationInfo.getActions()
list of either "startTracking" or "stopTracking":
Thevar action = IIf($fencenotificationtype == 'enter', 'stopTracking', 'startTracking'); return { 'message': 'Hello world', 'actions': [ action ] }
ArcadeExpression
must evaluate to either a string or a dictionary; seeArcadeExpression.getReturnType()
. Note that this method —setMessageExpression()
— takes anArcadeExpression
object, rather than a string.For more information on the available profile variables and functions for creating the message expression see the "Geotrigger Notification" profile at https://developers.arcgis.com/arcade/profiles/.
- Parameters:
messageExpression
- anArcadeExpression
that controls the message when a Geotrigger is met- Since:
- 100.12.0
- See Also:
- a string literal that is the same for all notifications relating to this
-
getName
Gets the name of the Geotrigger.- Returns:
- the name of the Geotrigger
- Since:
- 100.12.0
-
setName
Sets the name of the Geotrigger.- Parameters:
name
- the name of the Geotrigger- Throws:
IllegalArgumentException
- if name is null- Since:
- 100.12.0
-
getRequestedActions
Gets a list of strings indicating the set of requested actions when a notification is delivered.This property shows the full list of recommended actions that the Geotrigger author intends to be taken. Note that there is no requirement to take any action when a notification is delivered, but these provide a way to understand the Geotrigger author's intention. Use this property to:
- Display the expected behavior of a Geotrigger to the user, prior to monitoring.
- Check that your app supports the expected actions for the Geotrigger.
GeotriggerNotificationInfo
events may include a subset of these actions. The specific actions for an individual notification event (for example, when a given fence is entered) are shown inGeotriggerNotificationInfo.getActions()
. To populate the list of actions for a notification, thegetMessageExpression()
must return a dictionary with the key "actions", and a value showing the list of action strings.The list of actions are simple strings, so you can use them to control any custom action you wish your app to perform.
- Returns:
- a list of strings indicating the set of requested actions when a notification is delivered
- Since:
- 100.14.0
-