Timed actions allow you to measure the in-app time and total time between the start and the end of an action. The SDK calculates the amount of time in each session and the total time across sessions that it will take for the action to be completed. You can use timed actions to define segments and compare time to purchase, pass level, checkout flow, and so on.
The following metrics are reported for timed actions:
- Total # of seconds in the app between start and end (cross sessions)
- Total # of seconds between start and end (clock time)
An optional callback allows you to take additional action when the timed action completes:
- Run code and add any logic - optional custom logic based on duration results.
- Add context data before passing in durations.
- Cancel hit and durations not yet sent.
-
Add the library to your project and implement lifecycle.
For more information, see Add the SDK and Config File to your IntelliJ IDEA or Eclipse Project in Core implementation and lifeycle.
-
Import the library:
import com.adobe.mobile.*;
-
Call
trackTimedActionStart
and provide a timed action name and optional context data.HashMap cdata = new HashMap<String, Object>(); cdata.put("ExperienceName", experience); Analytics.trackTimedActionStart("TimeUntilPurchase", cdata);
-
(Optional) At any point, you can call
trackTimedActionUpdate
with the timed action name to add additional context data.HashMap cdata = new HashMap<String, Object>(); cdata.put("myapp.ImageLiked", imageName); Analytics.trackTimedActionUpdate("TimeUntilPurchase", cdata);
-
When the event completes, call
trackTimedActionEnd
and pass the timed action name andTimedActionBlock
(callback), which will look up all data and calculate durations.Analytics.trackTimedActionEnd("TimeUntilPurchase", cdata);
Timed event metrics are saved in mobile solution variables for automatic reporting.
In addition to the timed action name, you can also send additional context data with the action start and action update calls:
HashMap cdata = new HashMap<String, Object>();
cdata.put("myapp.ImageLiked", imageName);
Analytics.trackTimedActionUpdate("TimeUntilPurchase", cdata);
Context data values must be mapped to custom variables in Adobe Mobile services:
// Timed Action Start Example
HashMap cdata = new HashMap<String, Object>();
cdata.put("ExperienceName", experience);
Analytics.trackTimedActionStart("TimeUntilPurchase", cdata);
// Timed Action Update Example
cdata = new HashMap<String, Object>();
cdata.put("ImageLiked", imageName);
Analytics.trackTimedActionUpdate("TimeUntilPurchase", cdata);
// Timed Action End Example
Analytics.trackTimedActionEnd("TimeUntilPurchase", null);
// Timed Action End Example with Callback
Analytics.trackTimedActionEnd("TimeUntilPurchase", new Analytics.TimedActionBlock<Boolean>() {
@Override
public Boolean call(long inAppDuration, long totalDuration, Map<String, Object> contextData) {
contextData.put("PurchaseItem", "Item453");
return true; // return true to send the hit, false to cancel
}
});