Edit in GitHubLog an issue

Adobe Campaign Standard

Configure the Campaign Standard extension in the Data Collection UI

  1. In the Data Collection UI, select the Extensions tab.
  2. On the Catalog tab, locate the Adobe Campaign Standard extension, and select Install.
  3. Provide the extension settings.
  4. Select Save.
  5. Follow the publishing process to update SDK configuration.

Configure the Campaign Standard extension

configure

Campaign Standard endpoints

Provide endpoint URL(s) for your Campaign Standard instances. You can specify up to three unique endpoints for your development, staging, and production environments. In most cases, the server endpoint is the root URL address, such as companyname.campaign.adobe.com.

pKey

A unique, automatically generated identifier for a mobile app that was configured in Adobe Campaign Standard. After you configure this extension in the Data Collection UI, configure your mobile property in Campaign Standard. For more information, please read the tutorial on configuring a mobile application in Adobe Campaign.

After the configuration is successful in Campaign, the pKey is automatically generated and configured in the Campaign extension for a successful validation.

MCIAS region

Select an MCIAS region based on your customer's location or enter a custom endpoint. The SDK retrieves all in-app messaging rules and definition payloads from this endpoint.

Request timeout

The request timeout is the time in seconds to wait for a response from the in-app messaging service before timing out. The default timeout value is 5 seconds, and the minimum timeout value is 1 second.

Add the Campaign Standard extension to your app

Remember the following information when you add the Campaign extension to your app:

ExtensionInformation
Campaign Standard
The Campaign Standard extension requires the Mobile Core, Profile, Lifecycle, and Signal extensions. You should always ensure that you get the latest version of the extensions.
Profile
The Profile extension is required for in-app trigger frequencies to work accurately. For more information, see Profile.
Signal
The Signal extension is required for all postback rules to work. For more information, see Signal.
Lifecycle
The Lifecycle extension is required for a profile to be registered in Campaign. In order to do this, you will need to implement the Lifecycle APIs. For more information, please read either the Lifecycle API (Android) or the Lifecycle API (iOS) documentation.
  1. Add the Campaign Standard, Mobile Core and Profile extensions to your project using the app's Gradle file.

Kotlin

Copied to your clipboard
implementation(platform("com.adobe.marketing.mobile:sdk-bom:3.+"))
implementation("com.adobe.marketing.mobile:campaign")
implementation("com.adobe.marketing.mobile:core")
implementation("com.adobe.marketing.mobile:identity")
implementation("com.adobe.marketing.mobile:lifecycle")
implementation("com.adobe.marketing.mobile:signal")
implementation("com.adobe.marketing.mobile:userprofile")

Groovy

Copied to your clipboard
implementation platform('com.adobe.marketing.mobile:sdk-bom:3.+')
implementation 'com.adobe.marketing.mobile:campaign'
implementation 'com.adobe.marketing.mobile:core'
implementation 'com.adobe.marketing.mobile:identity'
implementation 'com.adobe.marketing.mobile:lifecycle'
implementation 'com.adobe.marketing.mobile:signal'
implementation 'com.adobe.marketing.mobile:userprofile'
  1. Import the Campaign Standard, Mobile Core, Profile, Lifecycle, and Signal extensions in your application's main activity.
Copied to your clipboard
import com.adobe.marketing.mobile.Campaign;
import com.adobe.marketing.mobile.Identity;
import com.adobe.marketing.mobile.Lifecycle;
import com.adobe.marketing.mobile.MobileCore;
import com.adobe.marketing.mobile.Signal;
import com.adobe.marketing.mobile.UserProfile;

Register the Campaign Standard extension with Mobile Core

In your app's OnCreate method, call the setApplication method.

Java

Copied to your clipboard
public class MainApp extends Application {
private static final String APP_ID = "YOUR_APP_ID";
@Override
public void onCreate() {
super.onCreate();
MobileCore.setApplication(this);
MobileCore.configureWithAppID(APP_ID);
List<Class<? extends Extension>> extensions = new ArrayList<>();
extensions.add(Campaign.EXTENSION);
extensions.add(Identity.EXTENSION);
extensions.add(Lifecycle.EXTENSION);
extensions.add(Signal.EXTENSION);
extensions.add(UserProfile.EXTENSION);
MobileCore.registerExtensions(extensions, o -> {
Log.d(LOG_TAG, "AEP Mobile SDK is initialized");
});
}
}

Kotlin

Copied to your clipboard
class MyApp : Application() {
override fun onCreate() {
super.onCreate()
MobileCore.setApplication(this)
MobileCore.configureWithAppID("YOUR_APP_ID")
val extensions = listOf(Campaign.EXTENSION, Identity.EXTENSION, Lifecycle.EXTENSION, Signal.EXTENSION, UserProfile.EXTENSION)
MobileCore.registerExtensions(extensions) {
Log.d(LOG_TAG, "AEP Mobile SDK is initialized")
}
}
}

For more information about starting Lifecycle, see the Lifecycle extension in Android guide.

Initialize the SDK and set up tracking

To initialize the SDK and set up tracking, see the initialize the SDK and set up tracking tutorial.

Set up in-app messaging

To learn how to create an in-app message using Adobe Campaign, see the tutorial on preparing and sending an in-app message.

Set up local notifications

To set up local notifications in Android, update the AndroidManifest.xml file:

Copied to your clipboard
<receiver android:name="com.adobe.marketing.mobile.LocalNotificationHandler"/>

To configure the notification icons that the local notification will use, see the configuring notification icons section within the Mobile Core.

Set up push messaging

To enable push messaging with Adobe Campaign, call setPushIdentifer to send the push identifier that is received from the Apple Push Notification Service (APNS) or Firebase Cloud Messaging Platform (FCM) to the Adobe Identity service. For more information about the setPushIdentifer API, see the setPushIdentifier section of the Adobe Identity API guide.

For more information about setting up your iOS app to connect to APNS and retrieve a device token that will be used as a push identifier, see the tutorial on registering your app with APNs. For more information about setting up your Android app to connect to FCM and retrieve a device registration token that will be used as a push identifier, see the tutorial on setting up a Firebase Cloud Messaging client app on Android.

Java

Example

Copied to your clipboard
FirebaseInstanceId.getInstance().getInstanceId()
.addOnCompleteListener(new OnCompleteListener<InstanceIdResult>() {
@Override
public void onComplete(@NonNull Task<InstanceIdResult> task) {
if (!task.isSuccessful()) {
return;
}
// Get new Instance ID token
String registrationID = task.getResult().getToken();
// Log and toast
System.out.println("Received new registration token: " + registrationID);
// invoke the API to send the push identifier to the Identity Service
MobileCore.setPushIdentifier(registrationID);
}
});

Tracking local and push notification message interactions

User interactions with local or push notifications can be tracked by invoking the collectMessageInfo API. After the API is invoked, a network request is made to Campaign that contains the message interaction event.

Java

Syntax

Copied to your clipboard
public static void collectMessageInfo(final Map<String, Object> messageInfo)
  • messageInfo is a map that contains the delivery ID, message ID, and action type for a local or push notification for which there were interactions. The delivery and message IDs are extracted from the notification payload.

Example

Copied to your clipboard
@Override
protected void onResume() {
super.onResume();
handleTracking();
}
// handle notification open and click tracking
private void handleTracking() {
Intent intent = getIntent();
Bundle data = intent.getExtras();
HashMap<String, Object> userInfo = null;
if (data != null) {
userInfo = (HashMap)data.get("NOTIFICATION_USER_INFO");
} else {
return;
}
// Check if we have notification user info.
// If it is present, this view was opened based on a notification.
if (userInfo != null) {
String deliveryId = (String)userInfo.get("deliveryId");
String broadlogId = (String)userInfo.get("broadlogId");
HashMap<String, Object> contextData = new HashMap<>();
if (deliveryId != null && broadlogId != null) {
contextData.put("deliveryId", deliveryId);
contextData.put("broadlogId", broadlogId);
// Send Click Tracking since the user did click on the notification
contextData.put("action", "2");
MobileCore.collectMessageInfo(contextData);
// Send Open Tracking since the user opened the app
contextData.put("action", "1");
MobileCore.collectMessageInfo(contextData);
}
}
}

Deleting mobile properties in the Data Collection UI

In the Data Collection UI, if you delete your mobile property, review your mobile property status in the Campaign Standard extension and ensure that the property displays an updated Deleted in Launch status. For more information about deleting a property, please read the delete a property section within the Data Collection UI documentation.

To remove the corresponding mobile app in Campaign Standard, select Remove from ACS. For more information, see the section on deleting your tags-enabled mobile application.

Handling clickthrough destinations included in Campaign in-app messages

A destination URL can be added to in-app messages that are delivered from Adobe Campaign. The destination can be a website URL such as https://www.adobe.com or a deep link such as campaigndemoapp://signupactivity?paidaccount=true which can be used to direct the user to a specific area of your app.

Handling in-app message website URLs on Android

Website URL's are handled without any additional action by the app developer. If an in-app message is clicked through and contains a valid URL, the device's default web browser will redirect to the URL contained in the in-app notification payload. The location of the URL differs for each notification type:

  • The url key is present in the alert message payload
  • The url is present in the query parameters of a fullscreen message button (data-destination-url)
  • The adb_deeplink key is present in the local notification payload
  • The uri key is present in the push notification payload

To handle deep links in the notification payload, you need to set up URL schemes in the app. For more information about setting URL schemes for Android, please read the tutorial on creating deep links to app content. Once the desired activity is started by the newly added intent filter, the data present in the deep link can be retrieved. After that point, any further actions based on the data present in the deep link can be made.

Java

Copied to your clipboard
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Intent intent = getIntent();
String action = intent.getAction();
Uri data = intent.getData();
Map<String, Intent> urlToIntentMap = new HashMap<>();
// add url string to Intent object mappings
// e.g. urlToIntentMap.put("https://validUrl.com", new Intent());
if (data != null) {
ServiceProvider.getInstance().getUriService().setUriHandler(new URIHandler() {
@Override
public Intent getURIDestination(String uri) {
return urlToIntentMap.get(uri);
}
});
}
}

Android app links were introduced with Android OS 6.0. They are similar to deep links in functionality, although they have the appearance of a standard website URL. The intent filter previously set up for deep links is modified to handle http schemes and verification of the app link needs to be set up on Google Search Console.

For more information on the additional verification setup needed, please read the tutorial on verifying Android app links. The resulting app link can be used to redirect to specific areas of your app if the app is installed or redirect to your app's website if the app isn't installed. For more information on Android app links, please read the guide on handling Android app links.

Customizing the frequency of registration requests sent to Campaign

The frequency of registration requests sent to Campaign are reduced starting with Campaign Standard Android extension version 1.0.7 and iOS extension version 1.0.6. The default registration delay is seven days since the last successful registration. This registration delay can be configured to provide more flexibility on when to send a registration request.

Java

Example

Copied to your clipboard
MobileCore.updateConfiguration(new HashMap<String, Object>() {
{
put("campaign.registrationDelay", 30); // number of days to delay sending a registration request.
put("campaign.registrationPaused", false); // boolean signaling if registration requests should be paused
}
});

Giving a value of 0 when setting campaign.registrationDelay will send a registration request on every launch event. This is the previous behavior seen before the registration request reduction enhancement was added.

Using a bundled image asset within a full page, large modal, or small modal in-app message

A bundled image asset may be specified on the Campaign Standard UI to be used as a primary image or as a fallback image in the case where a specified remote image URL is inaccessible. The bundled image should be specified on the Campaign Standard UI with the file name and file extension. For example, in the Bundled Image text entry field on the Campaign Standard UI, a JPEG file with the file name example can be provided in the following format:

Copied to your clipboard
example.jpg

The specified bundled image must then be included with your app when it is built. To do so:

The image must be placed in your app's assets directory. This directory is found in the src/main/ directory of the app. If the directory is not present, it can be created following a src/main/assets directory structure.

Configuration keys

To update SDK configuration programmatically, use the following information to change your Campaign Standard configuration values. For more information, see the Configuration API reference.

KeyRequiredDescriptionData Type
campaign.timeout
Yes
Sets the amount of time to wait for a response from the in-app messaging service.
Integer
campaign.mcias
Yes
Sets the in-app messaging service URL endpoint.
String
campaign.server
Yes
Sets the endpoint URL for the production environment in the Adobe Campaign Standard instance.
String
campaign.pkey
Yes
Sets the identifier for a mobile app that was configured in the production environment in the Adobe Campaign Standard.
String
build.environment
Yes
Specifies which environment to use (prod, dev, or staging) when sending registration information.
String
__dev__campaign.pkey
No
Sets the identifier for a mobile app that was configured in the development environment in Adobe Campaign Standard.
String
__dev__campaign.server
No
Sets the endpoint URL for the development environment in the Adobe Campaign Standard instance.
String
__stage__campaign.pkey
No
Sets the identifier for a mobile app that was configured in the staging environment in Adobe Campaign Standard.
String
__stage__campaign.server
No
Sets the endpoint URL for the staging environment in the Adobe Campaign Standard instance.
String
campaign.registrationDelay
No
Sets the number of days to delay the sending of the next Adobe Campaign Standard registration request.
Integer
campaign.registrationPaused
No
Sets the Adobe Campaign Standard registration request paused status.
Boolean
Was this helpful?
  • Privacy
  • Terms of Use
  • Do not sell or share my personal information
  • AdChoices
Copyright © 2024 Adobe. All rights reserved.