If you want to record the device’s ID for Advertisers (IDFA), you must display a prompt to get your user’s authorization. To do this, you need to include Apple’s App Tracking Transparency (ATT) framework in your app. The Adjust SDK stores the user’s authorization status and sends it to Adjust’s servers with each request.
Authorization statuses
Status | Code | Description |
---|---|---|
ATTrackingManagerAuthorizationStatusNotDetermined | 0 | The user hasn’t responded to the access prompt yet |
ATTrackingManagerAuthorizationStatusRestricted | 1 | Access to app-related data is blocked at the device level |
ATTrackingManagerAuthorizationStatusDenied | 2 | The user has denied access to app-related data for device measurement |
ATTrackingManagerAuthorizationStatusAuthorized | 3 | The user has approved access to app-related data for device measurement |
ATT authorization wrapper
The Adjust SDK contains a wrapper around Apple’s requestTrackingAuthorizationWithCompletionHandler
method. You can use this wrapper if you don’t want to customize the ATT prompt.
The callback method triggers when your user responds to the consent dialog. This method sends the user’s consent status code to Adjust’s servers. You can define responses to each status code within the callback function.
You must specify text content for the ATT. To do this, add your text to the NSUserTrackingUsageDescription
key in your Info.plist
file.
Get current authorization status
You can retrieve a user’s current authorization status at any time. Call the getAppTrackingAuthorizationStatus
method to return the authorization status code as an integer.
Custom prompt timing
If your app includes an onboarding process or a tutorial, you may want to delay sending your user’s ATT consent status until after the user has completed this process. To do this, you can set the attConsentWaitingInterval
property to delay the sending of data for up to 120 seconds to give the user time to complete the initial onboarding. After the timeout ends or the user sets their consent status, the SDK sends all information it has recorded during the delay to Adjust’s servers along with the user’s consent status.
Check for authorization status changes
If you use a custom ATT prompt, you need to inform the Adjust SDK of changes to the user’s authorization status. Call the checkForNewAttStatus
method to send the authorization status to Adjust’s servers.
iOS 17 consent handling
With the release of iOS 17, Apple implemented new rules on what data developers may send to third-parties. To ensure that developers can demonstrate compliance with Apple’s privacy guidelines, the Adjust SDK makes use of two separate endpoints for consenting and non-consenting users.
By default, the Adjust SDK sends a limited set of data to Adjust’s servers for probabilistic modeling using the analytics.adjust.com
endpoint. This endpoint doesn’t receive the following information:
idfa
: The device ID For Advertisers (IDFA).started_at
: The device startup time.
Only if the user grants ATT consent, the Adjust SDK gains access to both the idfa and started_at properties for deterministic attribution and sends the full payload to consent.adjust.com
.
Both of these endpoints are available for all URL strategies.
URL strategy | Non-consented endpoint | Consented endpoint |
---|---|---|
ADJDataResidencyEU | analytics.eu.adjust.com | consent.eu.adjust.com |
ADJDataResidencyTR | analytics.tr.adjust.com | consent.tr.adjust.com |
ADJDataResidencyUS | analytics.us.adjust.com | consent.us.adjust.com |
ADJUrlStrategyChina | analytics.adjust.world | consent.adjust.world |
ADJUrlStrategyCn | analytics.adjust.cn | consent.adjust.cn |
ADJUrlStrategyIndia | analytics.adjust.net.in | consent.adjust.net.in |