On iOS 14.5 and later, Apple's AppTrackingTransparency (ATT) framework zeroes out the Identifier for Advertisers (`IDFA = 00000000-0000-0000-0000-000000000000`) unless the user explicitly taps "Allow" on the system tracking dialog. When an iOS app fails to implement the ATT prompt—or triggers it poorly—it forfeits deterministic user-level targeting across every connected demand partner.
This technical guide quantifies the exact eCPM premium commanded by IDFA-consented iOS impressions, explains why configuring `SKAdNetworkItems` in `Info.plist` is mandatory even for non-consented users, and details how to sequence the ATT dialog alongside GDPR/UMP consent prompts.
1. Empirical eCPM Spread: IDFA-Consented vs. Zeroed-IDFA Traffic (US iOS)
When an OpenRTB bid request contains a valid non-zero IDFA string, DSPs can cross-reference the device against historical lookalike audiences, whale purchase graphs, and retargeting suppression lists. Consequently, IDFA-present impressions clear at a substantial premium:
| Ad Format (United States iOS) | LAT / Zeroed IDFA (`Denied`) | Valid IDFA Present (`Authorized`) | IDFA eCPM Lift (%) |
|---|---|---|---|
| Rewarded Video | $27.40 | $44.80 | +63.5% |
| Interstitial | $11.60 | $18.20 | +56.9% |
| MREC / Native Display | $2.15 | $3.45 | +60.4% |
| Adaptive Banner | $0.88 | $1.32 | +50.0% |
With a typical global ATT opt-in rate of 26% to 38% for games and utilities that implement the prompt properly, simply adding the `ATTrackingManager.requestTrackingAuthorization` call increases blended iOS ARPDAU by 15% to 24% compared to leaving the ATT framework unimplemented.
2. Why `SKAdNetworkItems` in `Info.plist` Is Critical for Non-IDFA Revenue
For the 65% to 74% of iOS users who tap "Ask App Not to Track" (or have system-wide tracking disabled), ad networks rely on Apple's privacy-preserving SKAdNetwork (SKAN 4.0) API to attribute app installs back to your publisher app ID.
However, Apple only generates a signed cryptographic SKAdNetwork install postback if the winning buyer's 10-character `SKAdNetworkIdentifier` (e.g., `cstr6suwn9.skadnetwork` for Google or `lud76z3bsr.skadnetwork` for AppLovin) is explicitly listed inside your app binary's `Info.plist` file. If you forget to include the full list of 50+ network SKAdNetwork IDs in `Info.plist`, DSPs detect `skadn_supported = false` in the bid stream and drop their bids on your non-IDFA traffic by 50%+.
3. Optimizing ATT Opt-In Rates & Sequencing with GDPR (Google UMP)
When implementing the ATT prompt alongside the Google User Messaging Platform (UMP) SDK for European/UK GDPR consent, follow two strict engineering rules:
- Delay SDK Initialization Until ATT Resolves: Do not initialize AdMob (`MobileAds.shared.start`) or AppLovin MAX on the very first frame of `didFinishLaunchingWithOptions` before calling the ATT prompt. If the ad SDK initializes and caches its first round of ads while ATT status is still `.notDetermined`, your entire first session of impressions—the highest-paying impressions of the day—will be auctioned without an IDFA even if the user clicks "Allow" 3 seconds later.
- EEA / UK Sequencing Rule (UMP Before or After ATT): To avoid double-prompt fatigue in Europe, either show the ATT system dialog first and then invoke the UMP GDPR dialog, or use Google UMP's built-in IDFA explainer message so European users only see the ATT dialog if they first consent to GDPR Purpose 1 (Device Storage/Access).
Compare Unity LevelPlay vs AppLovin MAX Next
See how Unity LevelPlay (ironSource) and AppLovin MAX handle SKAdNetwork optimization and gaming demand.