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
Key Takeaways
- IDFA and AAID let every SDK key events to the same device across all of your apps.
- ATT denial zeroes the IDFA and pushes iOS toward aggregate attribution; Android has no equivalent gate.
- Ad exchanges fuse per-app event streams into one cross-app behavioral profile via the shared ID.
- Background location loops turn app usage into a physical-visit history; prefer approximate location.
- Fingerprint fallbacks survive identifier resets, so permission hygiene must be periodic.