iOS — IDFA + App Tracking Transparency
iOS 14+ requires user consent before any SDK can read the IDFA. The system prompt is App Tracking Transparency (ATT). Add the usage description toInfo.plist:
ATTrackingManager.requestTrackingAuthorization automatically the first time a session is created. To manage the prompt yourself (for example, delay it until after onboarding), set requestTrackingAuthorization: false on SessionOptions and supply the advertisingId you collected.
The Swift SDK also reads IDFV (UIDevice.current.identifierForVendor) as a stable iOS-only secondary identifier. IDFV does not require ATT and is always available.
Android — GAID + AD_ID permission
GAID is always available on Android — there’s no runtime consent prompt. Reading it requires the install-timecom.google.android.gms.permission.AD_ID permission (Android 13+ / API level 33+).
How the permission is declared depends on the SDK:
-
Kotlin SDK and React Native SDK — added automatically via manifest merger. No changes to your
AndroidManifest.xmlrequired. -
Flutter SDK — declare it manually in
android/app/src/main/AndroidManifest.xml:
If your manifest has
tools:node="remove" on the AD_ID permission anywhere (often a leftover from an older privacy-tightening pass), remove the override or the SDK can’t read GAID.