@capgo/capacitor-app-tracking-transparency
v8.1.4
Published
Capacitor plugin for iOS App Tracking Transparency framework. Request user authorization to access app-related data for tracking.
Maintainers
Readme
capacitor-app-tracking-transparency
Capacitor plugin for iOS App Tracking Transparency framework. Request user authorization to access app-related data for tracking.
Why Capacitor App Tracking Transparency?
A simple, free, and lightweight plugin for iOS App Tracking Transparency:
- iOS 14+ compliance - Handle Apple's App Tracking Transparency requirements
- Permission status - Check current authorization status without prompting
- Request permission - Display the native iOS permission dialog
- Cross-platform - Returns
authorizedon Android/Web for transparent usage - Modern package management - Supports both Swift Package Manager (SPM) and CocoaPods (SPM-ready for Capacitor 8)
- Zero dependencies - Minimal footprint, no bloat
Perfect for apps using IDFA, advertising SDKs, analytics tracking, or any feature that tracks users across apps and websites.
Documentation
The most complete doc is available here: https://capgo.app/docs/plugins/app-tracking-transparency/
Compatibility
| Plugin version | Capacitor compatibility | Maintained | | -------------- | ----------------------- | ---------- | | v8.*.* | v8.*.* | ✅ | | v7.*.* | v7.*.* | On demand | | v6.*.* | v6.*.* | ❌ | | v5.*.* | v5.*.* | ❌ |
Note: The major version of this plugin follows the major version of Capacitor. Use the version that matches your Capacitor installation (e.g., plugin v8 for Capacitor 8). Only the latest major version is actively maintained.
Install
npm install @capgo/capacitor-app-tracking-transparency
npx cap synciOS
Add the NSUserTrackingUsageDescription key to your Info.plist file:
<key>NSUserTrackingUsageDescription</key>
<string>This identifier will be used to deliver personalized ads to you.</string>The string should explain why you need tracking permission. This message will be displayed to users when requesting permission.
Localizing the Permission Message
To provide localized versions of the tracking permission message, create InfoPlist.strings files for each language:
- Create a
InfoPlist.stringsfile in your Xcode project - Add the
NSUserTrackingUsageDescriptionkey with a localized value:
"NSUserTrackingUsageDescription" = "This identifier will be used to deliver personalized ads to you.";Android
App Tracking Transparency is an iOS-only framework. This plugin returns authorized status on Android to allow transparent cross-platform usage without conditional code.
Web
Returns authorized status on Web for development purposes and transparent cross-platform usage.
API
Capacitor App Tracking Transparency Plugin.
A plugin to request and check user authorization for app tracking on iOS devices. Uses Apple's App Tracking Transparency framework.
getStatus()
getStatus() => Promise<AppTrackingStatusResponse>Gets the current tracking authorization status without prompting the user.
Returns: Promise<AppTrackingStatusResponse>
Since: 1.0.0
requestPermission()
requestPermission() => Promise<AppTrackingStatusResponse>Requests user authorization to access app-related data for tracking. Displays the native iOS tracking permission dialog.
Note: This method will only show the dialog once. Subsequent calls will return the stored authorization status without showing the dialog.
Returns: Promise<AppTrackingStatusResponse>
Since: 1.0.0
getPluginVersion()
getPluginVersion() => Promise<{ version: string; }>Get the native Capacitor plugin version.
Returns: Promise<{ version: string; }>
Since: 1.0.0
Interfaces
AppTrackingStatusResponse
Response object containing the tracking authorization status.
| Prop | Type | Description | Since |
| ------------ | --------------------------------------------------------------- | ------------------------------------------ | ----- |
| status | AppTrackingStatus | The current tracking authorization status. | 1.0.0 |
Type Aliases
AppTrackingStatus
Possible values for the tracking authorization status.
authorized: User has authorized access to app-related data for trackingdenied: User has denied access to app-related data for trackingnotDetermined: User has not yet received the authorization requestrestricted: Authorization is restricted (e.g., parental controls, MDM)
'authorized' | 'denied' | 'notDetermined' | 'restricted'
