ATT Framework
Alternatives
Important: IDFA Recommendation
Why Not IDFA?
- Low opt-in rates: Most users deny tracking permission
- Extra implementation: Requires ATT framework integration
- App Store compliance: Must justify IDFA usage in App Store Connect
- Limited utility: Only available when user explicitly permits
- Not available on tvOS: ATT is not supported on tvOS
Recommended Alternatives
1. Identifier for Vendor (IDFV)
A consistent identifier across your apps from the same vendor:- No user permission required
- Consistent across app installs (until uninstall)
- Available on both iOS and tvOS
- No App Store justification needed
2. Hashed Email Address
The most reliable cross-device identifier:- Works across devices and platforms
- Highest priority for identity resolution
- No Apple framework dependencies
- User provided and expected
3. Internal User ID
Your system’s user identifier:App Tracking Transparency
If you still need IDFA, follow these steps:1. Add Usage Description
Add to yourInfo.plist:
2. Request Permission
3. Check Status Before Requesting
4. When to Request
Using setIdentityForIDFA
The SDK provides a dedicated method for IDFA:- Sets an alias with the reserved tag
"idfa" - Validates the IDFA is not all zeros
- Throws an error if IDFA is invalid
Apple Privacy Information
When submitting to the App Store, you must declare data collection. For apps using Permutive:Without IDFA
If you’re NOT using IDFA, Permutive’s SDK data collection is:- Identifiers: Device ID (vendor identifier if used)
- Usage Data: Product interaction
- Purpose: Analytics, advertising
With IDFA
If you ARE using IDFA, also declare:- Identifiers: Device ID (IDFA)
- Purpose: Third-party advertising, tracking
tvOS Considerations
tvOS Note: App Tracking Transparency and IDFA are not available on tvOS. Use
identifierForVendor or hashed email as primary identifiers on tvOS.Best Practices
- Do
- Don't
- Use
identifierForVendoras a reliable alternative - Use hashed email for cross-device identity
- Request ATT permission at an appropriate time
- Explain the value to users before requesting
- Handle all authorization statuses gracefully
- Have fallback identifiers when IDFA unavailable
Troubleshooting
setIdentityForIDFA throws error
setIdentityForIDFA throws error
Problem: IDFA call fails with error.Cause: IDFA is all zeros (tracking denied/restricted).Solution: Check authorization status first and use alternative identifiers:
ATT prompt not appearing
ATT prompt not appearing
Problem:
requestTrackingAuthorization doesn’t show prompt.Possible Causes:- Missing
NSUserTrackingUsageDescriptionin Info.plist - User already responded (check status first)
- Running on iOS 13 or earlier
- Running on simulator (may behave differently)
App rejected for IDFA usage
App rejected for IDFA usage
Problem: App Store rejects app for tracking without permission.Solution: Ensure you:
- Request ATT permission before accessing IDFA
- Have clear
NSUserTrackingUsageDescription - Accurately declare data usage in App Store Connect
Related Documentation
Identity Management
All identity options
Initialization
SDK setup and consent
Google Ad Manager
Ad targeting
Issues
Common problems