# Guideline 5.1.1 - Privacy: ATT Framework Without Tracking Usage Description

**Guideline:** 5.1.1 · **Store:** Apple App Store · **Risk:** low · **Difficulty:** easy

Canonical URL: https://appstorereject.com/rejections/apple/5/guideline-511-privacy-att-framework-without-tracking-usage-description

## Description

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 steps

1. **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.

2. **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.

3. **Handle all authorization states** — Your code must handle `.authorized`, `.denied`, `.notDetermined`, and `.restricted`. Only access `ASIdentifierManager.shared().advertisingIdentifier` when status is `.authorized`.

4. **Declare tracking in privacy manifest** — In `PrivacyInfo.xcprivacy`, set `NSPrivacyTracking` to `true` and list tracking domains in `NSPrivacyTrackingDomains`.

5. **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:**
- Only add ATT when you have a concrete tracking use case
- Include the purpose string at the same time you add the framework
- Test the ATT flow on a physical device (simulator always returns .notDetermined)

---
*Machine-readable source: https://api.appstorereject.com/api/rejections/detail?slug=guideline-511-privacy-att-framework-without-tracking-usage-description*