- In Experience Platform Launch, click the Extensions tab.
- On the Catalog tab, locate the Adobe Analytics extension, and click Install.
- Type the extension settings. For more information, see Configure the Analytics Extension.
- Click Save.
- Follow the publishing process to update SDK configuration.
No select menu will appear for the analytics company if the user only has access to a single company. On the other hand, a select menu will appear for users that have access to more than one analytics company. The list of report suites associated with the selected company will appear in the combo box in the report suites section.
{% hint style="info" %} Want to know how to find report suite IDs? See Report Suites. {% endhint %}
Select one or more mobile-enabled report suite identifiers from the combo box to which the Analytics data should be sent. Only report suite identifiers that belong to a company and that are enabled for mobile can be selected. For information on how to enable mobile for your report suite, see Mobile Management.
To narrow the search for a report suite identifier, type a string in the combo box text field. After a valid report suite identifier has been selected, this identifier appears in a tag below the combo box (shown above). To remove a report suite ID, click on the X next to the ID you want to remove. Report suite IDs can also be configured for the Development and Staging environments.
{% hint style="info" %} Want to know what a tracking server is and where to find it? For more information, see Correctly populate the trackingServer and trackingServerSecure variable. {% endhint %}
Type the tracking domain to which all Analytics requests should be made.
{% hint style="info" %} Do you need offline tracking? For more information, see Offline tracking. {% endhint %}
When the Offline Enabled checkbox is selected, Analytics hits are queued when your device is offline and are sent later when your device is back online. To use offline tracking, ensure that your report suite is timestamp enabled.
{% hint style="danger" %} If your report suite is timestamp enabled, the checkbox must be selected. If your report suite is not timestamped enabled, leave the checkbox deselected. If this setting is not configured correctly, data will be lost.
If you are not sure whether your report suite is timestamp enabled, contact Customer Care**.** {% endhint %}
{% hint style="info" %}
If you currently send mobile SDK data to a report suite that also collects data from web JavaScript, you might need to set up a separate report suite for mobile data or include a custom timestamp on all JavaScript hits that use thes.timestamp
variable. For more information, contact Customer Care.
{% endhint %}
{% hint style="info" %} For more information about Analytics server-side forwarding to Audience Manager, see Analytics sever-side forwarding. {% endhint %}
If you set up Analytics server-side forwarding to Audience Manager, select the Audience Manager Forwarding checkbox. When this checkbox is selected, all SDK requests to Analytics servers are sent with an expected response code of 10. This step ensures that Analytics traffic is forwarded to Audience Manager and that the Audience Manager User Profile is correctly updated in the SDK.
{% hint style="warning" %} Select the Backdate Previous Session Info checkbox only if you have timestamp-enabled report report suites. {% endhint %}
When you select this checkbox, the SDK backdates the end-of-session lifecycle information so that this information can be attributed into its correct session. Session information currently consists of crashes and session length. The SDK also backdates the session information hit to 1 second after the last hit of the previous session. This means that crashes and session data will correlate with the correct date on which they occurred. One hit is backdated each time a new launch of the application is occurs.
For example, if you select the checkbox, Lifecycle session information or crash events are backdated to one second after the last hit was sent. If you do not select the checkbox, Lifecycle data is attached to the first hit of the subsequent session.
If this option is disabled, the Adobe SDK attaches the session information to the current lifecycle.
This setting creates a threshold number of hits to be sent in consecutive calls. For example, if you type or select 10, each Analytics hit before the 10th hit is stored in the queue. When the 10th hit comes in, all 10 hits are sent to Analytics in the order in which they were generated.
{% hint style="info" %} If you set a value greater than 0, ensure that the Offline Enabled checkbox is also selected. {% endhint %}
The default value for this setting is 0, which means that hit batching is disabled, and all hits are immediately sent to Analytics as they are generated.
Number of seconds to wait before Analytics launch hits are sent from the SDK. Ensure that this setting is set at 5s or greater when using acquisition functionality from the Mobile Services extension.
{% tabs %} {% tab title="Android" %} Java
-
Add the Mobile Core and Analytics extensions to your project using the app's Gradle file.
implementation 'com.adobe.marketing.mobile:sdk-core:1.+' implementation 'com.adobe.marketing.mobile:analytics:1.+'
-
Import the Analytics extension in your application's main activity.
import com.adobe.marketing.mobile.*;
{% endtab %}
{% tab title="iOS" %}
-
Add the Mobile Core and Analytics extensions to your project using Cocoapods.
-
Add following pods in your
Podfile
:pod 'ACPCore' pod 'ACPAnalytics'
-
Import the Analytics and Identity libraries:
Objective-C
#import "ACPCore.h" #import "ACPAnalytics.h" #import "ACPIdentity.h"
Swift
import ACPCore import ACPAnalytics import ACPIdentity
{% endtab %}
{% tab title="React Native" %}
-
Install Analytics.
npm install @adobe/react-native-acpanalytics
1.1 Link
- React Native 0.60+
CLI autolink feature links the module while building the app.
- React Native <= 0.59
react-native link @adobe/react-native-acpanalytics
Note For iOS
using cocoapods
, run:
cd ios/ && pod install
-
Import the extension.
import {ACPAnalytics} from '@adobe/react-native-acpanalytics';
-
Get the extension version.
ACPAnalytics.extensionVersion().then(version => console.log("AdobeExperienceSDK: ACPAnalytics version: " + version));
{% endtab %}
{% tab title="Flutter" %}
-
Install Analytics.
Instructions on installing the Analytics SDK in Flutter can be found here.
-
Import the extension.
import 'package:flutter_acpanalytics/flutter_acpanalytics.dart';
-
Get the extension version.
String version = await FlutterACPAnalytics.extensionVersion;
{% endtab %}
{% tab title="Cordova" %}
-
After creating your Cordova app and adding the Android and iOS platforms, the Analytics extension for Cordova can be added with this command:
cordova plugin add https://github.com/adobe/cordova-acpanalytics.git
-
Get the extension version.
ACPAnalytics.extensionVersion(function(version) { console.log("ACPAnalytics version: " + version); }, function(error) { console.log(error); });
{% endtab %}
{% tab title="Unity" %}
-
After importing the ACPAnalytics.unitypackage, the Analytics extension for Unity can be added with following code in the MainScript
using com.adobe.marketing.mobile;
-
Get the extension version.
ACPAnalytics.extensionVersion();
{% endtab %} {% endtabs %}
{% tabs %} {% tab title="Android" %}
To call the set up methods that call the setApplication() method in the onCreate()
method:
public class MobileApp extends Application {
@Override
public void onCreate() {
super.onCreate();
MobileCore.setApplication(this);
MobileCore.configureWithAppId("yourAppId");
try {
Analytics.registerExtension(); //Register Analytics with Mobile Core
Identity.registerExtension();
MobileCore.start(null);
} catch (Exception e) {
//Log the exception
}
}
}
Important: Analytics depends on the Identity extension and is automatically included in Core by Maven. When manually installing the Analytics extension, ensure that you add the identity-1.x.x.aar
library to your project.
{% endtab %}
{% tab title="iOS" %}
In your app'sapplication:didFinishLaunchingWithOptions
, register Analytics with Mobile Core:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[ACPCore configureWithAppId:@"yourAppId"];
[ACPAnalytics registerExtension];
[ACPIdentity registerExtension];
[ACPCore start:nil];
// Override point for customization after application launch.
return YES;
}
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
ACPCore.configure(withAppId: "yourAppId")
ACPAnalytics.registerExtension()
ACPIdentity.registerExtension()
ACPCore.start(nil)
// Override point for customization after application launch.
return true;
}
Important: Analytics depends on the Identity extension and is automatically included in the Core pod. When installing the Analytics extension manually, ensure that you added the libACPIdentity_iOS.a
library to your project.
{% endtab %}
{% tab title="React Native" %}
When using React Native, registering Analytics with Mobile Core should be done in native code which is shown under the Android and iOS tabs. {% endtab %}
{% tab title="Flutter" %}
When using Flutter, registering Analytics with Mobile Core should be done in native code which is shown under the Android and iOS tabs. {% endtab %}
{% tab title="Cordova" %}
When using Cordova, registering Analytics with Mobile Core must be done in native code which is shown under the Android and iOS tabs. {% endtab %}
{% tab title="Unity" %}
Register the extension in the start()
function:
using com.adobe.marketing.mobile;
using using AOT;
public class MainScript : MonoBehaviour
{
[MonoPInvokeCallback(typeof(AdobeStartCallback))]
public static void HandleStartAdobeCallback()
{
ACPCore.ConfigureWithAppID("1423ae38-8385-8963-8693-28375403491d");
}
// Start is called before the first frame update
void Start()
{
ACPAnalytics.registerExtension();
ACPCore.Start(HandleStartAdobeCallback);
}
}
{% endtab %} {% endtabs %}
To automatically report on the application lifecycle details in Analytics, ensure that you properly configure the lifecycle data collection. For more information, see Lifecycle Metrics.
To track mobile app states and actions in Adobe Analytics, implement the trackAction and trackState APIs from the Mobile Core extension. For more information, see Track app actions and Track app states.
{% hint style="info" %}
trackState reports the View State as Page Name, and state views are reported as Page View in Analytics. The value is sent to Analytics by using the page name variable (pagename=value
).
trackAction reports the Action as an event and does not increment your page views in Analytics. The value is sent to Analytics by using the action variable (action=value
).
{% endhint %}
To see the performance of your Target activities for some segments, you can set up the Analytics extension for Target (A4T) cross-solution integration by enabling the A4T campaigns. This integration allows you to use Analytics reports to examine your results. If you use Analytics as the reporting source for an activity, all reporting and segmentation for that activity is based on Analytics data collection. For more information, see Target.
To enable the ability to share Analytics data with Audience Manager, in the Experience Platform Launch UI, select the Audience Manager Forwarding checkbox. For more information, go to Audience Manager.
For more information about collecting audio and video analytics, see Media Analytics for Audio and Video.
Event serialization is not supported by processing rules. To set serialized events directly on the hits sent to Analytics, use the following syntax in context data parameters:
{% tabs %} {% tab title="Android" %}
cdata.put("&&events", "event1:12341234");
//create a context data dictionary
HashMap cdata = new HashMap<String, Object>();
// add events
cdata.put("&&events", "event1:12341234");
// send a tracking call - use either a trackAction or TrackState call.
// trackAction example:
MobileCore.trackAction("Action Name", cdata);
// trackState example:
MobileCore.trackState("State Name", cdata);
{% endtab %}
{% tab title="iOS" %}
[contextData setObject:@"eventN:serial number" forKey:@"&&events"];
//create a context data dictionary
NSMutableDictionary *contextData = [NSMutableDictionary dictionary];
// add events
[contextData setObject:@"event1:12341234" forKey:@"&&events"];
// send the tracking call - use either a trackAction or trackState call.
// trackAction example:
[ACPCore trackAction:@"Action Name" data:contextData];
// trackState example:
[ACPCore trackState:@"State Name" data:contextData];
{% endtab %}
{% tab title="React Native" %}
var contextData = {"eventN:serial number": "&&events"};
// create a context data dictionary and add events
var contextData = {"event1:12341234": "&&events"};
// send the tracking call - use either a trackAction or trackState call.
// trackAction example:
ACPCore.trackAction("Action Name", contextData);
// trackState example:
ACPCore.trackState("State Name", contextData);
{% endtab %}
{% tab title="Flutter" %}
var contextData = {"eventN:serial number": "&&events"};
// create a context data dictionary and add events
var contextData = {"event1:12341234": "&&events"};
// send the tracking call - use either a trackAction or trackState call.
// trackAction example:
FlutterACPCore.trackAction("Action Name", data: contextData);
// trackState example:
FlutterACPCore.trackState("State Name", data: contextData);
{% endtab %}
{% tab title="Cordova" %}
var contextData = {"eventN:serial number": "&&events"};
// create a context data dictionary and add events
var contextData = {"event1:12341234": "&&events"};
// send the tracking call - use either a trackAction or trackState call.
// trackAction example:
ACPCore.trackAction("Action Name", contextData, function(handleCallback) {
console.log("AdobeExperenceSDK: Track action success: " + handleCallback);
}, function(handleError) {
console.log("AdobeExperenceSDK: Failed to track action: " + handleError);
});
// trackState example:
ACPCore.trackState("State Name", contextData, function(handleCallback) {
console.log("AdobeExperenceSDK: Track state success: " + handleCallback);
}, function(handleError) {
console.log("AdobeExperenceSDK: Failed to track state: " + handleError);
});
{% endtab %}
{% tab title="Unity" %}
var contextData = new Dictionary<string, string>();
contextData.Add("key", "trackAction");
// create a context data dictionary and add events
var contextData = new Dictionary<string, string>();
contextData.Add("key", "trackAction");
// send the tracking call - use either a trackAction or trackState call.
// trackAction example:
ACPCore.TrackAction("Action Name", contextData);
// trackState example:
ACPCore.TrackState("State Name", contextData);
{% endtab %} {% endtabs %}
Using trackState APIs to send data to Adobe Analytics
{% embed url="https://video.tv.adobe.com/v/26260/?quality=12" caption="" %}
To update the SDK configuration programmatically, use the following information to change your Analytics configuration values.
Key | Required | Description |
---|
analytics.server |
Yes | See Tracking Server |
---|
analytics.rsids
|
Yes |
See Report Suites Multiple report suite IDs can be comma separated with no space in- between.
For example:
|
---|
HashMap<String, Object> data = new HashMap<String, Object>();
data.put("analytics.server", "sample.analytics.tracking.server");
data.put("analytics.rsids", "rsid1,rsid2");
data.put("analytics.batchLimit", 10);
data.put("analytics.offlineEnabled", true);
MobileCore.updateConfiguration(data);
{% endtab %}
{% tab title="iOS" %}
Objective-C
NSDictionary *updatedConfig = @{@"analytics.server":@"sample.analytics.tracking.server",
@"analytics.rsids":@"rsid1,rsid2",
@"analytics.batchLimit":@(10),
@"analytics.offlineEnabled":@YES};
[ACPCore updateConfiguration:updatedConfig];
Swift
let updatedConfig = ["analytics.server":"sample.analytics.tracking.server",
"analytics.rsids":"rsid1,rsid2",
"analytics.batchLimit":10,
"analytics.offlineEnabled":true]
ACPCore.updateConfiguration(updatedConfig)
{% endtab %}
{% tab title="React Native" %}
ACPCore.updateConfiguration({"analytics.server": "sample.analytics.tracking.server",
"analytics.rsids": "rsid1,rsid2",
"analytics.batchLimit": 10,
"analytics.offlineEnabled": true});
{% endtab %}
{% tab title="Flutter" %}
FlutterACPCore.updateConfiguration({"analytics.server": "sample.analytics.tracking.server",
"analytics.rsids": "rsid1,rsid2",
"analytics.batchLimit": 10,
"analytics.offlineEnabled": true});
{% endtab %}
{% tab title="Cordova" %}
ACPCore.updateConfiguration({"analytics.server": "sample.analytics.tracking.server",
"analytics.rsids": "rsid1,rsid2",
"analytics.batchLimit": 10,
"analytics.offlineEnabled": true}, function(handleCallback) {
console.log("AdobeExperenceSDK: Analytics configuration update success: " + handleCallback);
}, function(handleError) {
console.log("AdobeExperenceSDK: Failed to update analytics configuration: " + handleError);
});
{% endtab %}
{% tab title="Unity" %}
var dict = new Dictionary<string, object>();
dict.Add("analytics.server": "sample.analytics.tracking.server");
dict.Add("analytics.rsids": "rsid1,rsid2");
dict.Add("analytics.batchLimit": 10);
dict.Add("analytics.offlineEnabled": true);
ACPCore.UpdateConfiguration(dict);
{% endtab %} {% endtabs %}
For more information, see Configuration API Reference.