Edit in GitHubLog an issue

Privacy and GDPR

The Adobe Experience Platform SDKs give you controls to manage consent and privacy obligations, such as the European Union's General Data Protection Regulation (GDPR). Developers can retrieve locally stored identities and set opt status flags for data collection and transmission.

Before implementing these controls, read the Adobe Experience Platform Privacy Service documentation.

When Adobe provides software and services to an enterprise, Adobe acts as a data processor for any personal data it processes and stores as part of providing these services. As a data processor, Adobe processes personal data in accordance with your company's permission and instructions, as set out in your agreement with Adobe. As a data controller, you can use the Experience Platform SDKs to support privacy retrieve and delete requests from your mobile apps.

Setup steps

The following sections provide details on how you can collect consent and privacy status to ensure collection of data suits your user's preferences.

Depending on the mobile extensions you use, there are two ways of collecting and enforcing consent preferences when using the Experience Platform SDKs:

  1. When using the Edge Network mobile extensions, you should use the Consent for Edge Network extension.
  2. When using Adobe Experience Cloud mobile extensions, you should use privacy status settings.

The two options are documented in detail below.

Using Experience Platform SDKs for Edge Network

You can set the collect consent status to ensure collection of data suits your user's preferences.

ExtensionCollect (y)Collect (n)Collect (pending)
Edge Network
Hits are sent
Hits are not sent
Hits are queued

Note: When no default collect consent value is defined in configuration, the SDK defaults to Yes (y) for collect consent.

Java

You can set the collect consent to one of the following values:

  • y
  • n

To understand the expected behavior, see the Update and get collect consent preferences table above.

getConsents

You can programmatically view the current collect consent preferences status in a dictionary representation by using the following API.

Java

Syntax

Copied to your clipboard
public static void getConsents(final AdobeCallback<Map<String, Object>> callback);
  • callback - callback invoked with the current consents of the extension. If an AdobeCallbackWithError is provided, an AdobeError, can be returned in the eventuality of any error that occured while getting the user consents. The callback may be invoked on a different thread.

Example

Copied to your clipboard
Consent.getConsents(new AdobeCallback<Map<String, Object>>() {
@Override
public void call(Map<String, Object> currentConsents) {
if (currentConsents == null) { return; }
final Map<String, Object> consents = currentConsets.get("consents");
final Map<String, Object> collectConsent = consents.get("collect");
final String collectConsentStatus = collectConsent.get("val");
// inspect collectConsentStatus
}
});

updateConsents

Use this example to programmatically update the consent collect for the application user.

Java

Syntax

Copied to your clipboard
public static void update(final Map<String, Object> consents);

Example

Copied to your clipboard
// example 1, updating users collect consent to 'yes'
final Map<String, Object> collectConsents = new HashMap<>();
collectConsents.put("collect", new HashMap<String, String>() {
{
put("val", "y");
}
});
final Map<String, Object> consents = new HashMap<>();
consents.put("consents", collectConsents);
Consent.update(consents);
// example 2, updating users collect consent to 'no'
final Map<String, Object> collectConsents = new HashMap<>();
collectConsents.put("collect", new HashMap<String, String>() {
{
put("val", "n");
}
});
final Map<String, Object> consents = new HashMap<>();
consents.put("consents", collectConsents);
Consent.update(consents);

getIdentities

When using the Edge Network extensions, use the Identity.getIdentities API to retrieve all the identifier data stored locally by the SDK and send this data to your servers.

Configuration keys

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

KeyDescription
consent.default
Defines the set of default consent preferences for the SDK in XDM format. For more details, see Privacy/Personalization/Marketing Preferences (Consents) Schema.

Using Adobe Experience Cloud Solution extensions

Set and get privacy status

You can set a privacy status to ensure collection of data suits your user's preferences.

Expected BehaviorOpt InOpt OutOpt Unknown
Analytics
Hits are sent
Hits are not sent
Hits are queued
Audience Manager
Signals, ID syncs are sent
Signals, ID syncs are not sent
Syncs are queued
Campaign Classic
User data is stored, calls are sent
User data is cleared, calls are not sent
User data is stored, calls are not sent
Target
Mbox requests are sent
Mbox requests are not sent
Mbox requests are queued
Campaign Standard
User data is stored, calls are sent
User data is cleared, calls are not sent
User data is stored, calls are queued

setPrivacyStatus

You can set the privacy status to one of the following values:

  • MobilePrivacyStatus.OPT_IN
  • MobilePrivacyStatus.OPT_OUT
  • MobilePrivacyStatus.UNKNOWN

To understand the expected behavior, see the "Set and get privacy status" table above.

Java

Syntax

Copied to your clipboard
public static void setPrivacyStatus(final MobilePrivacyStatus privacyStatus);

Example

Copied to your clipboard
MobileCore.setPrivacyStatus(MobilePrivacyStatus.OPT_OUT);

getPrivacyStatus

You can also programmatically view the current privacy status by using the following:

The enum representation of the privacy status that corresponds to the following statuses:

  • MobilePrivacyStatus.OPT_IN
  • MobilePrivacyStatus.OPT_OUT
  • MobilePrivacyStatus.UNKNOWN

Java

Syntax

Copied to your clipboard
void getPrivacyStatus(AdobeCallback<MobilePrivacyStatus> callback);
  • callback is invoked after the privacy status is available.
  • If an instance of AdobeCallbackWithError is provided, and you are fetching the attributes from the Mobile SDK, the timeout value is 5000ms. If the operation times out or an unexpected error occurs, the fail method is called with the appropriate AdobeError.

Example

Copied to your clipboard
MobileCore.getPrivacyStatus(new AdobeCallback<MobilePrivacyStatus>() {
@Override
public void call(MobilePrivacyStatus value) {
System.out.println("getPrivacyStatus: " + status);
}
});

getSdkIdentities

To retrieve all the identifier data stored locally by the SDK as a JSON string, use the getSdkIdentities API from the Mobile Core extension.

Configuration keys

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

KeyDescription
global.privacy
Setting to control privacy opt status; values may include optedin, optedout, optunknown

Additional information

  • Privacy
  • Terms of Use
  • Do not sell or share my personal information
  • AdChoices
Copyright © 2024 Adobe. All rights reserved.