Privacy features (original) (raw)

Privacy features

The Adjust SDK contains features that you can use to handle user privacy in your app.

Send erasure request


public static void gdprForgetMe(final Context context)

The EU’s General Data Protection Regulation (GDPR) and similar privacy laws worldwide (CCPA, LGPD, etc.) grant data subjects comprehensive rights when it comes to the processing of their personal data. These rights include, among others, the right to erasure (see Art. 17 GDPR)(1). As a data processor, Adjust is obliged to support you (the data controller) in the processing of such requests from your (app) users.

You can send the user’s erasure request to Adjust by calling the gdprForgetMe method. Once Adjust has been notified:

Third-party sharing for specific users

You can use the Adjust SDK to record when a user changes their third-party sharing settings. Third party sharing settings are configured using the AdjustThirdPartySharing class.

Instantiate an AdjustThirdPartySharing object


public AdjustThirdPartySharing(final Boolean isEnabled)

To enable or disable third party sharing with the Adjust SDK, you need to instantiate an AdjustThirdPartySharing object. This object contains variables that control how third party sharing is handled by Adjust.

To instantiate a third party sharing object, create a new AdjustThirdPartySharing instance and pass the following parameters:


val adjustThirdPartySharing = AdjustThirdPartySharing(true)

Adjust.trackThirdPartySharing(adjustThirdPartySharing)


AdjustThirdPartySharing adjustThirdPartySharing = new AdjustThirdPartySharing(true);

Adjust.trackThirdPartySharing(adjustThirdPartySharing);

Once you’ve instantiated your AdjustThirdPartySharing object, you can send the information to Adjust by calling the Adjust.trackThirdPartySharing method with your AdjustThirdPartySharing instance as an argument.


val adjustThirdPartySharing = AdjustThirdPartySharing(true)

Adjust.trackThirdPartySharing(adjustThirdPartySharing)


AdjustThirdPartySharing adjustThirdPartySharing = new AdjustThirdPartySharing(true);

Adjust.trackThirdPartySharing(adjustThirdPartySharing);

Send granular information


public void addGranularOption(final String partnerName,

                              final String key,

                              final String value)

You can attach granular information when a user updates their third-party sharing preferences. Use this information to communicate more detail about a user’s decision. To do this, call the addGranularOption method with the following parameters:


val adjustThirdPartySharing = AdjustThirdPartySharing(true)

adjustThirdPartySharing.addGranularOption("PartnerA", "foo", "bar")

Adjust.trackThirdPartySharing(adjustThirdPartySharing)


AdjustThirdPartySharing adjustThirdPartySharing = new AdjustThirdPartySharing(true);

adjustThirdPartySharing.addGranularOption("PartnerA", "foo", "bar");

Adjust.trackThirdPartySharing(adjustThirdPartySharing);

Manage Facebook Limited Data Use

Facebook provides a feature called Limited Data Use (LDU) to comply with the California Consumer Privacy Act (CCPA). This feature enables you to notify Facebook when a California-based user is opted out of the sale of data. You can also use it if you want to opt all users out by default.

You can update the Facebook LDU status by passing the following arguments to the addGranularOption method:

Parameter Description
partner_name Use facebook to toggle LDU.
data_processing_options_country The country in which the user is located.0: Request that Facebook use geolocation.1: United States of America.
data_processing_options_state Notifies Facebook in which state the user is located.0: Request that Facebook use geolocation.1000: California.1001: Colorado1002: Connecticut

val adjustThirdPartySharing = AdjustThirdPartySharing(true)

adjustThirdPartySharing.addGranularOption("facebook", "data_processing_options_country", "1")

adjustThirdPartySharing.addGranularOption("facebook", "data_processing_options_state", "1000")

Adjust.trackThirdPartySharing(adjustThirdPartySharing)


AdjustThirdPartySharing adjustThirdPartySharing = new AdjustThirdPartySharing(true);

adjustThirdPartySharing.addGranularOption("facebook", "data_processing_options_country", "1");

adjustThirdPartySharing.addGranularOption("facebook", "data_processing_options_state", "1000");

Adjust.trackThirdPartySharing(adjustThirdPartySharing);

To comply with the EU’s Digital Markets Act (DMA), Google Ads and the Google Marketing Platform require explicit consent to receive Adjust’s attribution requests to their APIs. To communicate this consent, you need to add the following granular options to your third party sharing instance for the partner google_dma.

Key Value Description
eea 1 (positive) | 0 (negative) Informs Adjust whether users installing the app are within the European Economic Area.This includes EU member states, Switzerland, Norway, Iceland and Slovenia.
ad_personalization 1 (positive) | 0 (negative) Informs Adjust whether users consented with being served personalized ads via Google Ads and/or Google Marketing Platform.This parameter also informs the npa parameter reserved for Google Marketing Platform.
ad_user_data 1 (positive) | 0 (negative) Informs Adjust whether users consented with their advertiser ID being leveraged for attribution purposes.

val adjustThirdPartySharing = AdjustThirdPartySharing(true)

adjustThirdPartySharing.addGranularOption("google_dma", "eea", "1");

adjustThirdPartySharing.addGranularOption("google_dma", "ad_personalization", "1");

adjustThirdPartySharing.addGranularOption("google_dma", "ad_user_data", "1");

Adjust.trackThirdPartySharing(adjustThirdPartySharing)


AdjustThirdPartySharing adjustThirdPartySharing = new AdjustThirdPartySharing(null);

adjustThirdPartySharing.addGranularOption("google_dma", "eea", "1");

adjustThirdPartySharing.addGranularOption("google_dma", "ad_personalization", "1");

adjustThirdPartySharing.addGranularOption("google_dma", "ad_user_data", "1");

Adjust.trackThirdPartySharing(adjustThirdPartySharing);

Update partner sharing settings


public void addPartnerSharingSetting(final String partnerName,

                                     final String key,

                                     final boolean value)

By default, Adjust shares all metrics with any partners you’ve configured in your app settings. You can use the Adjust SDK to update your third party sharing settings on a per-partner basis. To do this, call the addPartnerSharingSetting method with the following arguments:

Argument Data type Description
partnerName String The name or ID of the partner. Download the full list of available partners
key String The metric to share with the partner
value Boolean The user’s decision

You can use the partnerName to specify which partner you want to disable or re-enable sharing of specific metrics. Here,

You can use the key to specify which metrics you want to disable or re-enable. If you want to enable/disable sharing all metrics, you can use the all key. The full list of available metrics is available below:

Metrics group

When you set a false value against a metric for a partner, Adjust stops sharing the metric along with all the child metrics under the group with the partner. These nested groups are:

Here,

Examples

If you want to stop sharing all metrics with a specific partner, pass the all key with a false value.


val adjustThirdPartySharing = AdjustThirdPartySharing(true)

adjustThirdPartySharing.addPartnerSharingSetting("PartnerA", "all", false)

Adjust.trackThirdPartySharing(adjustThirdPartySharing)


AdjustThirdPartySharing adjustThirdPartySharing = new AdjustThirdPartySharing(true);

adjustThirdPartySharing.addPartnerSharingSetting("PartnerA", "all", false);

Adjust.trackThirdPartySharing(adjustThirdPartySharing);

To re-enable sharing with a specific partner, pass the all key with a true value.


val adjustThirdPartySharing = AdjustThirdPartySharing(true)

adjustThirdPartySharing.addPartnerSharingSetting("PartnerA", "all", true)

Adjust.trackThirdPartySharing(adjustThirdPartySharing)


AdjustThirdPartySharing adjustThirdPartySharing = new AdjustThirdPartySharing(true);

adjustThirdPartySharing.addPartnerSharingSetting("PartnerA", "all", true);

Adjust.trackThirdPartySharing(adjustThirdPartySharing);

If you want to share data only with PartnerA, you need to pass:


val adjustThirdPartySharing = AdjustThirdPartySharing(true)

adjustThirdPartySharing.addPartnerSharingSetting("all", "all", false)

adjustThirdPartySharing.addPartnerSharingSetting("PartnerA", "all", true)

Adjust.trackThirdPartySharing(adjustThirdPartySharing)


AdjustThirdPartySharing adjustThirdPartySharing = new AdjustThirdPartySharing(true);

adjustThirdPartySharing.addPartnerSharingSetting("all", "all", false);

adjustThirdPartySharing.addPartnerSharingSetting("PartnerA", "all", true);

Adjust.trackThirdPartySharing(adjustThirdPartySharing);

If you want to share only session data with all the partners, you need to pass:


val adjustThirdPartySharing = AdjustThirdPartySharing(true)

adjustThirdPartySharing.addPartnerSharingSetting("all", "all", false)

adjustThirdPartySharing.addPartnerSharingSetting("all", "session", true)

Adjust.trackThirdPartySharing(adjustThirdPartySharing)


AdjustThirdPartySharing adjustThirdPartySharing = new AdjustThirdPartySharing(true);

adjustThirdPartySharing.addPartnerSharingSetting("all", "all", false);

adjustThirdPartySharing.addPartnerSharingSetting("all", "session", true);

Adjust.trackThirdPartySharing(adjustThirdPartySharing);

If you want to share only session data with PartnerA, you need to pass:


val adjustThirdPartySharing = AdjustThirdPartySharing(true)

adjustThirdPartySharing.addPartnerSharingSetting("all", "all", false)

adjustThirdPartySharing.addPartnerSharingSetting("PartnerA", "session", true)

Adjust.trackThirdPartySharing(adjustThirdPartySharing)


AdjustThirdPartySharing adjustThirdPartySharing = new AdjustThirdPartySharing(true);

adjustThirdPartySharing.addPartnerSharingSetting("all", "all", false);

adjustThirdPartySharing.addPartnerSharingSetting("PartnerA", "session", true);

Adjust.trackThirdPartySharing(adjustThirdPartySharing);

If you want to disable dynamic_callbacks, pass the all key with a false value.


val adjustThirdPartySharing = AdjustThirdPartySharing(true)

adjustThirdPartySharing.addPartnerSharingSetting("dynamic_callbacks", "all", false)

Adjust.trackThirdPartySharing(adjustThirdPartySharing)


AdjustThirdPartySharing adjustThirdPartySharing = new AdjustThirdPartySharing(true);

adjustThirdPartySharing.addPartnerSharingSetting("dynamic_callbacks", "all", false);

Adjust.trackThirdPartySharing(adjustThirdPartySharing);

You can stop or start sharing specific metrics by calling the addPartnerSharingSetting method multiple times with different keys. For example, if you only want to share event information with a partner, you can pass:


val adjustThirdPartySharing = AdjustThirdPartySharing(true)

adjustThirdPartySharing.addPartnerSharingSetting("PartnerA", "all", false)

adjustThirdPartySharing.addPartnerSharingSetting("PartnerA", "event", true)

Adjust.trackThirdPartySharing(adjustThirdPartySharing)


AdjustThirdPartySharing adjustThirdPartySharing = new AdjustThirdPartySharing(true);

adjustThirdPartySharing.addPartnerSharingSetting("PartnerA", "all", false);

adjustThirdPartySharing.addPartnerSharingSetting("PartnerA", "event", true);

Adjust.trackThirdPartySharing(adjustThirdPartySharing);

Set URL strategy


public void setUrlStrategy(List<String> domains, boolean useSubdomains, boolean isDataResidency)

The URL strategy feature allows you to set either:

This is useful if you’re operating in a country with strict privacy requirements. When you set your URL strategy, Adjust stores data in the selected data residency region or sends traffic to the chosen domain.

To set your country of data residency, call the AdjustConfig.setUrlStrategy method following parameters:

See the table below for a list of mappings.

URL strategy Main and fallback domain Use sub domains Is Data Residency
EU data residency "eu.adjust.com" true true
Turkish data residency "tr.adjust.com" true true
US data residency "us.adjust.com" true true
China global URL strategy "adjust.world", "adjust.com" true false
China URL strategy "adjust.cn", "adjust.com" true false
China only URL strategy "adjust.cn" true false
India URL strategy "adjust.net.in", "adjust.com" true false

val domains: List<String> = mutableListOf("domain") // eg. eu.adjust.com

val useSubdomains = true // or false

val isDataResidency = false // or true for data residency

adjustConfig.setUrlStrategy(domains, useSubdomains, isDataResidency)


List<String> domains = Arrays.asList("domain"); // eg. eu.adjust.com

boolean useSubdomains = true; // or false

boolean isDataResidency = false; // or true for data residency

adjustConfig.setUrlStrategy(domains, useSubdomains, isDataResidency);

Examples


adjustConfig.setUrlStrategy(listOf("adjust.net.in", "adjust.com"), true, false)


adjustConfig.setUrlStrategy(listOf("adjust.world", "adjust.com"), true, false)


adjustConfig.setUrlStrategy(listOf("adjust.cn"), true, false)


adjustConfig.setUrlStrategy(listOf("eu.adjust.com"), true, true)


adjustConfig.setUrlStrategy(listOf("tr.adjust.com"), true, true)


adjustConfig.setUrlStrategy(listOf("us.adjust.com"), true, true)


config.setUrlStrategy(Arrays.asList("adjust.net.in", "adjust.com"), true, false);


adjustConfig.setUrlStrategy(Arrays.asList("adjust.world", "adjust.com"), true, false);


adjustConfig.setUrlStrategy(Arrays.asList("adjust.cn"), true, false);


adjustConfig.setUrlStrategy(Arrays.asList("eu.adjust.com"), true, true);


adjustConfig.setUrlStrategy(Arrays.asList("tr.adjust.com"), true, true);


adjustConfig.setUrlStrategy(Arrays.asList("us.adjust.com"), true, true);


public static void trackMeasurementConsent(final boolean consentMeasurement)

If you’re using Data Privacy settings in your Adjust dashboard, you need to set up the Adjust SDK to work with them. This includes settings such as consent expiry period and user data retention period.

To toggle this feature, call the trackMeasurementConsent method with the following argument:

When enabled, the SDK communicates the data privacy settings to Adjust’s servers. Adjust’s servers then applies your data privacy rules to the user. The Adjust SDK continues to work as expected.


Adjust.trackMeasurementConsent(true)


Adjust.trackMeasurementConsent(true);

COPPA compliance


public void enableCoppaCompliance()

If you need your app to be compliant with the Children’s Online Privacy Protection Act (COPPA), call the AdjustConfig.enableCoppaCompliance method before SDK intialization. This method performs the following actions:

  1. Disables third-party sharing.
  2. Prevents the SDK from reading device and advertising IDs (for example: gps_adid and android_id).

val appToken = "{YourAppToken}"

val environment = AdjustConfig.ENVIRONMENT_SANDBOX

val config = AdjustConfig(this, appToken, environment)

config.enableCoppaCompliance()

//...

Adjust.initSdk(config)


String appToken = "{YourAppToken}";

String environment = AdjustConfig.ENVIRONMENT_SANDBOX;

AdjustConfig config = new AdjustConfig(this, appToken, environment);

config.enableCoppaCompliance();

//...

Adjust.initSdk(config);

Play Store Kids Apps


public void enablePlayStoreKidsCompliance()

If your app targets users under the age of 13, and the install region isn’t the USA, you need to mark it as a Kids App. This prevents the SDK from reading device and advertising IDs (for example: gps_adid and android_id).

To mark your app as a Play Store Kids App, call the enablePlayStoreKidsCompliance method on your AdjustConfig instance before SDK initialization.


val appToken = "{YourAppToken}"

val environment = AdjustConfig.ENVIRONMENT_SANDBOX

val config = AdjustConfig(this, appToken, environment)

config.enablePlayStoreKidsCompliance()

//...

Adjust.initSdk(config)


String appToken = "{YourAppToken}";

String environment = AdjustConfig.ENVIRONMENT_SANDBOX;

AdjustConfig config = new AdjustConfig(this, appToken, environment);

config.enablePlayStoreKidsCompliance();

//...

Adjust.initSdk(config);