Guideline 5.1.1
Guideline 5.1.1 - Privacy: ATT Framework Without Tracking Usage Description
Our Take
Your app imports the App Tracking Transparency or AdSupport framework but is missing the NSUserTrackingUsageDescription in Info.plist. Apple requires this description to show the ATT prompt.
Resolution Guide
Add NSUserTrackingUsageDescription to Info.plist
This is the text shown in the ATT permission dialog. Be specific about what data is tracked and why. Example: "This identifier will be used to deliver personalized ads to you." Generic descriptions are rejected.
Implement the ATT prompt
Call ATTrackingManager.requestTrackingAuthorization before accessing the IDFA. Show the prompt at an appropriate time — not on first launch. Apple recommends showing it when the user encounters an ad-supported feature.
Handle all authorization states
Your code must handle .authorized, .denied, .notDetermined, and .restricted. Only access ASIdentifierManager.shared().advertisingIdentifier when status is .authorized.
Declare tracking in privacy manifest
In PrivacyInfo.xcprivacy, set NSPrivacyTracking to true and list tracking domains in NSPrivacyTrackingDomains.
If you don't actually track
If the ATT/AdSupport import is unused or leftover, remove it entirely. Remove the import statements, remove the framework from your Podfile/Package.swift, and remove NSUserTrackingUsageDescription from Info.plist.
Prevention:
Community Solutions · 0
Sign in to share your solution.
More Guideline 5 (Legal) rejections
- Guideline 5 - Legal: Remove Watermark Feature
- Guideline 5.1.1 - Data Collection and Storage: Incomplete Privacy Manifest
- Guideline 5.1.1 - Data Collection and Storage: Missing Purpose Strings
- Guideline 5.1.1 - Data Collection and Storage: Privacy Manifest Missing
- Guideline 5.1.1 - Data Collection and Storage: Privacy Nutrition Label Mismatch
- Guideline 5.1.1 - Data Collection and Storage: Privacy Policy