Adobe Analytics

Analyze your data from anywhere in the customer journey using your Adobe Analytics segments.
Contentsquare allows you to use your Adobe Analytics segments in every Contentsquare feature (Journey Analysis, Page Comparator, Zoning Analysis, Session Replay).

  1. Follow the instructions from Adobe Analytics for mobile apps
  2. Add the AEPAnalytics iOS SDK to your project

Add the following code snippet in your application code. Add a call to the csMatchingKeyFunction() from within the initState of your application.

// TODO: Use your local storage. A package you can use is: https://pub.dev/packages/shared_preferences
final localStorage = LocalStorageFake();
@override
void initState() {
// ... your code
sendCSMatchingKeyIfNeeded();
// ... your code
}
Future<void> sendCSMatchingKeyIfNeeded() async {
// TODO: Implement your local storage. A package you can use is: https://pub.dev/packages/shared_preferences
final csMatchingKeyTimestampMap = await localStorage.getMap(
'csMatchingKey_creation_ts',
);
final csMatchingKeyIsNotGenerated = csMatchingKeyTimestampMap == null;
if (csMatchingKeyIsNotGenerated) {
await _submitNewCsMatchingKey();
return;
}
final timestamp = DateTime.fromMillisecondsSinceEpoch(
csMatchingKeyTimestampMap['timestamp'],
);
if (timestamp.difference(DateTime.now()).inMinutes > 30) {
// if the key is not valid anymore, submit a new one
await _submitNewCsMatchingKey();
}
// if the key is still valid, do nothing
}
Future<void> _submitNewCsMatchingKey() async {
// Generate the matching key and store it in the local storage
final millisecondsSinceEpoch = DateTime.now().millisecondsSinceEpoch;
final csMatchingKeyValue = '${Random().nextDouble()}_$millisecondsSinceEpoch';
await localStorage.setMap('csMatchingKey_creation_ts', {
'csMatchingKey': csMatchingKeyValue,
'timestamp': millisecondsSinceEpoch,
});
// Submit the matching key to Contentsquare and Adobe
await Contentsquare().sendDynamicVar('csMatchingKey', stringValue: csMatchingKeyValue);
await FlutterACPCore.trackState("csMatchingKey_state", data: {'csMatchingKey': csMatchingKeyValue});
}