Topic 14 · Deep Dive

14.2 App Permissions, Tracking, and Ad Targeting

Two Resettable Ad Identifiers

iOS hands every app the IDFA, a UUID-style advertising identifier; Android exposes the AAID, the Google Play Advertising ID. Any embedded SDK can read the same value, which is exactly what makes cross-app tracking possible -- and exactly the problem. Resetting swaps the value under Settings, while "Limit Ad Tracking" or "Opt out of interest-based ads" returns a string of zeros instead. Since iOS 14.5, App Tracking Transparency gates cross-app use of the IDFA: the app must show the prompt, and a denied app sees only the zeroed identifier.

What Happens on the Allowed Branch

With permission granted, app SDKs batch events -- launches, purchases, searches, coarse or precise GPS pings -- tagged with the IDFA or AAID and ship them to mobile measurement partners and ad exchanges. In real-time bidding, the segments derived from those events decide which ads follow you. Because every installed app reads the same ID, the exchange trivially joins them into one cross-app profile: fitness tracker plus pregnancy app plus news app. Background location loops quietly extend the profile into a physical visit history -- home, workplace, clinic -- and drain battery while doing it.

The Denied Branch Still Has an Escape Hatch

When ATT is denied, measurement falls back to aggregate attribution: SKAdNetwork-style postbacks carry a small conversion-value integer and no user-level join, and in-app personalization leans on contextual signals. But trackers fall back to probabilistic fingerprinting -- IP, user agent, app version, session timing -- to guess that two installs are the same device. Android never had a hard prompt: the AAID is readable by any SDK, so per-app permission sheets, location precision toggles, and the "Allow Cross-App Tracking" state remain the real control surface.

A Ten-Minute Audit

Walk every app's permission sheet: revoke location you cannot justify, downgrade precise to approximate, deny microphone and photo access, reset both ad identifiers, turn off personalized ad options in each vendor's settings panel, and uninstall anything whose business model is your event stream. Repeat after OS updates, which sometimes silently re-grant permissions.

Architecture Diagram

Mobile ad identifier flow your phone SDKs, permissions IDFA / AAID resettable ad ID ad exchange cross-app tracking allowed RTB bids on segments cross-app profile ATT denied -> IDFA = zeros
Allowing cross-app tracking keys every app to one ID; denial zeroes it, but fingerprint fallbacks persist.

Key Takeaways

« Back to Topic 14« 14.1 / 14.3 »