Privacy and GDPR
This document lists information about the previous versions of the Adobe Experience Platform Mobile SDKs. Check out this page for latest versions and solution support of the Mobile SDKs.
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 section provides details on how you can set and get privacy status to ensure collection of data suits your user's preferences.
Using Adobe Experience Cloud Solution extensions
When using Adobe Experience Cloud mobile extensions, you should use privacy status settings.
Set and get privacy status
You can set a privacy status to ensure collection of data suits your user's preferences.
Expected Behavior | Opt In | Opt Out | Opt 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 |
Analytics users: If your report suite is not timestamp enabled, hits are discarded until the privacy status changes to opt in
.
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 clipboardpublic static void setPrivacyStatus(final MobilePrivacyStatus privacyStatus);
Example
Copied to your clipboardMobileCore.setPrivacyStatus(MobilePrivacyStatus.OPT_OUT);
You can set privacy status to one of the following values:
ACPMobilePrivacyStatusOptIn
ACPMobilePrivacyStatusOptOut
ACPMobilePrivacyStatusUnknown
To understand the expected behavior, see the Set and get privacy status table above.
Swift
Syntax
Copied to your clipboardclass func setPrivacyStatus(_ status: ACPMobilePrivacyStatus) {}
Example
Copied to your clipboardACPCore.privacyStatus = ACPMobilePrivacyStatusOptIn
Objective-C
Syntax
Copied to your clipboard+ (void) setPrivacyStatus: (ACPMobilePrivacyStatus) status;
Example
Copied to your clipboard[ACPCore setPrivacyStatus:ACPMobilePrivacyStatusOptIn];
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 clipboardpublic static void setPrivacyStatus(final MobilePrivacyStatus privacyStatus);
Example
Copied to your clipboardMobileCore.setPrivacyStatus(MobilePrivacyStatus.OPT_OUT);
You can set privacy status to one of the following values:
ACPMobilePrivacyStatusOptIn
ACPMobilePrivacyStatusOptOut
ACPMobilePrivacyStatusUnknown
To understand the expected behavior, see the Set and get privacy status table above.
Swift
Syntax
Copied to your clipboardclass func setPrivacyStatus(_ status: ACPMobilePrivacyStatus) {}
Example
Copied to your clipboardACPCore.privacyStatus = ACPMobilePrivacyStatusOptIn
Objective-C
Syntax
Copied to your clipboard+ (void) setPrivacyStatus: (ACPMobilePrivacyStatus) status;
Example
Copied to your clipboard[ACPCore setPrivacyStatus:ACPMobilePrivacyStatusOptIn];
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 clipboardvoid 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, thefail
method is called with the appropriateAdobeError
.
Example
Copied to your clipboardMobileCore.getPrivacyStatus(new AdobeCallback<MobilePrivacyStatus>() {@Overridepublic void call(MobilePrivacyStatus value) {System.out.println("getPrivacyStatus: " + status);}});
The enum representation of the privacy status that corresponds to the following statuses:
ACPMobilePrivacyStatusOptIn
ACPMobilePrivacyStatusOptOut
ACPMobilePrivacyStatusUnknown
Swift
Syntax
Copied to your clipboardclass func getPrivacyStatus(_ callback: @escaping (_ status: ACPMobilePrivacyStatus) -> Void)class func getPrivacyStatus(withCompletionHandler completionHandler: @escaping (_ status: ACPMobilePrivacyStatus, _ error: Error?) -> Void)
- callback is invoked after the privacy status is available.
- completionHandler is invoked with the current privacy status, or error if an unexpected error occurs or the request times out. The default timeout is 5000ms.
Example
Copied to your clipboardACPCore.getPrivacyStatus({ status inswitch status {case ACPMobilePrivacyStatusOptIn:print("Privacy Status: Opt-In")default:break}})ACPCore.getPrivacyStatus(withCompletionHandler: { status, error inif error != nil {// handle error here} else {// handle the retrieved privacy status}})
Objective-C
Syntax
Copied to your clipboard+ (void) getPrivacyStatus: (nonnull void (^) (ACPMobilePrivacyStatus status)) callback;+ (void) getPrivacyStatusWithCompletionHandler: (nonnull void (^) (ACPMobilePrivacyStatus status, NSError* _Nullable error)) completionHandler;
- callback is invoked after the privacy status is available.
- completionHandler is invoked with the current privacy status, or error if an unexpected error occurs or the request times out. The default timeout is 5000ms.
Example
Copied to your clipboard[ACPCoregetPrivacyStatus:^(ACPMobilePrivacyStatus status) {switch (status) {case ACPMobilePrivacyStatusOptIn: NSLog(@"Privacy Status: Opt-In"); break;}}];[ACPCore getPrivacyStatusWithCompletionHandler:^(ACPMobilePrivacyStatus status, NSError * _Nullable error) {if (error) {// handle error here} else {// handle the retrieved privacy status}}];
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 clipboardvoid 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, thefail
method is called with the appropriateAdobeError
.
Example
Copied to your clipboardMobileCore.getPrivacyStatus(new AdobeCallback<MobilePrivacyStatus>() {@Overridepublic void call(MobilePrivacyStatus value) {System.out.println("getPrivacyStatus: " + status);}});
The enum representation of the privacy status that corresponds to the following statuses:
ACPMobilePrivacyStatusOptIn
ACPMobilePrivacyStatusOptOut
ACPMobilePrivacyStatusUnknown
Swift
Syntax
Copied to your clipboardclass func getPrivacyStatus(_ callback: @escaping (_ status: ACPMobilePrivacyStatus) -> Void)class func getPrivacyStatus(withCompletionHandler completionHandler: @escaping (_ status: ACPMobilePrivacyStatus, _ error: Error?) -> Void)
- callback is invoked after the privacy status is available.
- completionHandler is invoked with the current privacy status, or error if an unexpected error occurs or the request times out. The default timeout is 5000ms.
Example
Copied to your clipboardACPCore.getPrivacyStatus({ status inswitch status {case ACPMobilePrivacyStatusOptIn:print("Privacy Status: Opt-In")default:break}})ACPCore.getPrivacyStatus(withCompletionHandler: { status, error inif error != nil {// handle error here} else {// handle the retrieved privacy status}})
Objective-C
Syntax
Copied to your clipboard+ (void) getPrivacyStatus: (nonnull void (^) (ACPMobilePrivacyStatus status)) callback;+ (void) getPrivacyStatusWithCompletionHandler: (nonnull void (^) (ACPMobilePrivacyStatus status, NSError* _Nullable error)) completionHandler;
- callback is invoked after the privacy status is available.
- completionHandler is invoked with the current privacy status, or error if an unexpected error occurs or the request times out. The default timeout is 5000ms.
Example
Copied to your clipboard[ACPCoregetPrivacyStatus:^(ACPMobilePrivacyStatus status) {switch (status) {case ACPMobilePrivacyStatusOptIn: NSLog(@"Privacy Status: Opt-In"); break;}}];[ACPCore getPrivacyStatusWithCompletionHandler:^(ACPMobilePrivacyStatus status, NSError * _Nullable error) {if (error) {// handle error here} else {// handle the retrieved privacy 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.
Key | Description |
---|---|
global.privacy | Setting to control privacy opt status; values may include optedin , optedout , optunknown |
Video
Additional information
- For more information about GDPR, see GDPR and Your Business
- To see the Privacy Service API documentation, go to Privacy Service API