A simple custom event can be created by calling:
Custom event also accepts a dictionary of string key/values as event properties.
Smartlook.trackCustomEvent(String eventName, [Object map = null]);
Screen/navigation transitions can be manually tracked by calling:
Smartlook.trackNavigationEvent(String key, SmartlookNavigationEventType type);
Navigation events need to be tracked manually, because Flutter applications typically consist of single activity. Manual tracking needs to be implemented so mobile heatmaps work correctly.
Duration of any time-sensitive or long-running actions in the application can be measured using timed events. A timed event can be started by using the following:
Smartlook.startTimedCustomEvent(String eventName, [Object map = null]);
This will not send out any events but will return a unique
eventId that needs to be stored and it is then used to stop/cancel a custom timed event. To send out an event with a duration, stop needs to be called:
Smartlook.stopTimedCustomEvent(String key, [Object map = null]);
eventId obtained from
Properties set in start will be merged with properties set in stop/cancel. Properties from stop/cancel have a higher priority and will rewrite conflicting properties from the start.
In case a given action failed
cancelTimedCustomEvent() can be called instead of
stopTimedCustomEvent() it has an extra field used for the reason of any failure:
Smartlook.cancelTimedCustomEvent(String key, String reason, [Object map = null]);
Extra properties can be attached to every event, these properties are called global event properties. Global event properties can be set by calling:
Smartlook.setGlobalEventProperty(String key, String value, bool immutable) Smartlook.setGlobalEventProperties(Object map, bool immutable)
Properties set to be immutable have the highest priority and once set they cannot be overridden (only removed).
Global event properties have higher a priority so in the merging process they will override custom properties with the same key.
A global property with a given key can be removed:
Or all global event properties can be removed at once:
Global event properties are stored until they are not removed or the app is uninstalled.
It can be beneficial to disable some automatically detected events due to security or usability reasons. This can be done using event tracking modes:
EventTrackingMode.FULL_TRACKING: this a default state. SDK tracks all automatically detected events along with all user defined events.
EventTrackingMode.IGNORE_USER_INTERACTION: disables automatically detected selector (click on a
View), focus, touch, gesture and keyboard events.
EventTrackingMode.IGNORE_NAVIGATION_INTERACTION: disables automatically detected navigation events. User defined ones are still being sent.
EventTrackingMode.IGNORE_RAGE_CLICKS: disables automatic detection and tracking of rage click events.
EventTrackingMode.NO_TRACKING: no automatically detected events are tracked. Only user defined events are still tracked.
Single or a combination of event tracking modes can be set any time after SDK setup by using the following:
Smartlook.setEventTrackingMode(EventTrackingMode eventTrackingMode); Smartlook.setEventTrackingModes(List<EventTrackingMode> eventTrackingModes);