App Tracking Transparency
Starting with iOS 14.5, Apple requires apps to request explicit user permission before tracking them across apps and websites owned by other companies. This is enforced through the App Tracking Transparency (ATT) framework. The Facebook SDK readsATTrackingManager.trackingAuthorizationStatus directly on iOS 17+ to determine whether advertiser tracking is enabled. You do not need to set Settings.shared.isAdvertiserTrackingEnabled manually — the SDK derives this from the ATT status.
Add the usage description
Before callingATTrackingManager.requestTrackingAuthorization, you must add NSUserTrackingUsageDescription to your app’s Info.plist. Apple will reject your app from the App Store if this key is missing and your app uses the ATT framework.
Request authorization at the right time
Request tracking permission at a moment where the context makes the benefit clear to the user — for example, after they have completed onboarding or before showing an ad.Call
requestTrackingAuthorization before initializing the Facebook SDK if you want the SDK to have the correct tracking status from first launch. Alternatively, call it early in your app’s lifecycle and initialize the SDK after the completion handler fires.Advertiser ID collection
TheFacebookAdvertiserIDCollectionEnabled key in Info.plist controls whether the SDK collects the device’s Identifier for Advertisers (IDFA). This is separate from ATT authorization — you can disable collection independently of what the user chooses in the ATT prompt.
Add this key to your Info.plist to disable IDFA collection entirely:
Settings.shared:
true. If you disable IDFA collection, attribution accuracy will be reduced but your app will still function.
Limited Login
Limited Login is a privacy-preserving login mode that restricts what data Facebook receives from your app. When you use Limited Login, Facebook does not use the login event for ad targeting or measurement. To use Limited Login, set thetracking property of LoginConfiguration to .limited:
AccessToken.currentis not set — you receive anAuthenticationToken(an OpenID Connect ID token) instead.- The SDK does not send app events associated with the login flow to Facebook for ad targeting.
- You can still verify the user’s identity using the ID token.
App Store data disclosure
Apple requires you to declare in App Store Connect what data types your app collects and how they are used. Because the Facebook SDK collects certain data on your behalf, you must include that data in your privacy nutrition label. The following data types are commonly associated with the Facebook SDK. Review each one and disclose it if you have not explicitly disabled the corresponding feature.| Data type | Collected by | How to disable |
|---|---|---|
| Device ID (IDFA) | FBSDKCoreKit | Set FacebookAdvertiserIDCollectionEnabled to false in Info.plist |
| Purchase history | FBSDKCoreKit (auto-logged IAP events) | Set FacebookAutoLogAppEventsEnabled to false |
| Crash data | FBSDKCoreKit | Cannot be disabled |
| Usage data (app events) | FBSDKCoreKit | Set FacebookAutoLogAppEventsEnabled to false |
| User ID | FBSDKLoginKit | Not applicable if you do not use Login |
SKAdNetwork integration
The Facebook SDK automatically handles SKAdNetwork registration and conversion value updates. You do not need to call any SKAdNetwork APIs directly — the SDK callsSKAdNetwork.registerAppForAdNetworkAttribution() and updates conversion values as events are logged.
SKAdNetwork reporting is enabled by default. To disable it:
Info.plist:
Disabling SKAdNetwork reporting means Facebook will not receive install attribution signals through the privacy-preserving SKAdNetwork channel. This may reduce the accuracy of your campaign measurement.
Aggregated Event Measurement
Aggregated Event Measurement (AEM) is Facebook’s privacy-safe attribution framework for iOS 14+. It enables you to measure the effectiveness of your ads without relying on user-level data or the IDFA. The SDK handles AEM automatically when your app opens deep links from Facebook. AEM works by:- Embedding an encrypted attribution token in deep links from Facebook ads.
- The SDK reads this token when your app opens the link.
- Conversion events are reported in aggregate without exposing individual user data.