{"_id":"@capawesome/capacitor-app-tracking-transparency","_rev":"4-7ef4c730c5e37e8fd5aa08cbb90a8930","name":"@capawesome/capacitor-app-tracking-transparency","dist-tags":{"latest":"0.1.2"},"versions":{"0.0.1":{"name":"@capawesome/capacitor-app-tracking-transparency","version":"0.0.1","keywords":["capacitor","plugin","native"],"author":{"name":"Robin Genz","email":"mail@robingenz.dev"},"license":"MIT","_id":"@capawesome/capacitor-app-tracking-transparency@0.0.1","maintainers":[{"name":"robingenz","email":"mail@robingenz.dev"}],"homepage":"https://capawesome.io/docs/plugins/app-tracking-transparency/","bugs":{"url":"https://github.com/capawesome-team/capacitor-plugins/issues"},"dist":{"shasum":"d7f10b54ee5e871a2f1557d5042aaa8f92e73e94","tarball":"https://registry.npmjs.org/@capawesome/capacitor-app-tracking-transparency/-/capacitor-app-tracking-transparency-0.0.1.tgz","fileCount":31,"integrity":"sha512-n1KRcx0IAi0yDPV5OE+i8TuNSPcrCrDW93/btdjDHTMb31OixzocY0FrKYH1xtLXrhA1EBKz0PivBfmS7d5pcg==","signatures":[{"sig":"MEQCIHaGfoyX3sqhzPfAUOK7zxSIwTTP7XYulVvU7ADfSytzAiBeXEaKdreSpmO9WNZg1D+4TdcrRU51HfNpFzmFNpHnRw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":42609},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","funding":[{"url":"https://github.com/sponsors/capawesome-team/","type":"github"},{"url":"https://opencollective.com/capawesome","type":"opencollective"}],"gitHead":"8dd31ce5d3f16f94fb71d033f47512e99908f4e4","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write && npm run swiftlint -- --fix --format","lint":"npm run eslint && npm run prettier -- --check && npm run swiftlint -- lint","build":"npm run clean && npm run docgen && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api AppTrackingTransparencyPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext ts","verify":"npm run verify:ios && npm run verify:android && npm run verify:web","prettier":"prettier \"**/*.{css,html,ts,js,java}\"","swiftlint":"node-swiftlint","verify:ios":"cd ios && pod install && xcodebuild -workspace Plugin.xcworkspace -scheme Plugin -destination generic/platform=iOS && cd ..","verify:web":"npm run build","prepublishOnly":"npm run build","verify:android":"cd android && ./gradlew clean build test && cd ..","ios:pod:install":"cd ios && pod install --repo-update && cd ..","ios:spm:install":"cd ios && swift package resolve && cd .."},"_npmUser":{"name":"robingenz","email":"mail@robingenz.dev"},"capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"repository":{"url":"git+https://github.com/capawesome-team/capacitor-plugins.git","type":"git"},"_npmVersion":"11.13.0","description":"Capacitor plugin for the App Tracking Transparency framework.","directories":{},"_nodeVersion":"24.16.0","eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"8.57.0","rimraf":"6.1.2","rollup":"4.53.3","swiftlint":"2.0.0","typescript":"5.9.3","@capacitor/cli":"8.0.0","@capacitor/ios":"8.0.0","@capacitor/core":"8.0.0","@capacitor/docgen":"0.3.1","@capacitor/android":"8.0.0","@ionic/eslint-config":"0.4.0","prettier-plugin-java":"2.6.7"},"peerDependencies":{"@capacitor/core":">=8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/capacitor-app-tracking-transparency_0.0.1_1783405225972_0.9770636248892157","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@capawesome/capacitor-app-tracking-transparency","version":"0.1.0","keywords":["capacitor","plugin","native","capacitor-plugin","app tracking transparency","att","idfa","advertising identifier","tracking permission","tracking authorization","ios tracking"],"author":{"name":"Robin Genz","email":"mail@robingenz.dev"},"license":"MIT","_id":"@capawesome/capacitor-app-tracking-transparency@0.1.0","maintainers":[{"name":"robingenz","email":"mail@robingenz.dev"}],"homepage":"https://capawesome.io/docs/sdks/capacitor/app-tracking-transparency/","bugs":{"url":"https://github.com/capawesome-team/capacitor-plugins/issues"},"dist":{"shasum":"bd7de75f4f1280f1748cda154320dab404ac5c8b","tarball":"https://registry.npmjs.org/@capawesome/capacitor-app-tracking-transparency/-/capacitor-app-tracking-transparency-0.1.0.tgz","fileCount":31,"integrity":"sha512-u4rd4cTSHdHSwSAA9M6aiknCpf80VYrigJLYLpV1OzstBALpgl9HTPQ9ccF5T7123CZh6RKsv3R0S6Y4ODBSGg==","signatures":[{"sig":"MEYCIQCwk05BKdOwLrcctPALoOM5tAhcvKQjL1l0nQhzgagSxAIhAPZ9ApoLQbOAraadbiMgSqQ9cKY7RsVTOBRatTxP0Y77","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@capawesome%2fcapacitor-app-tracking-transparency@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":46963},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","funding":[{"url":"https://github.com/sponsors/capawesome-team/","type":"github"},{"url":"https://opencollective.com/capawesome","type":"opencollective"}],"gitHead":"1ce17b1fd14c43b2f1d5d3c2da82221e1d1dca37","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write && npm run swiftlint -- --fix --format","lint":"npm run eslint && npm run prettier -- --check && npm run swiftlint -- lint","build":"npm run clean && npm run docgen && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api AppTrackingTransparencyPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext ts","verify":"npm run verify:ios && npm run verify:android && npm run verify:web","prettier":"prettier \"**/*.{css,html,ts,js,java}\"","swiftlint":"node-swiftlint","verify:ios":"cd ios && pod install && xcodebuild -workspace Plugin.xcworkspace -scheme Plugin -destination generic/platform=iOS && cd ..","verify:web":"npm run build","prepublishOnly":"npm run build","verify:android":"cd android && ./gradlew clean build test && cd ..","ios:pod:install":"cd ios && pod install --repo-update && cd ..","ios:spm:install":"cd ios && swift package resolve && cd .."},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:259aacb8-09e9-4347-80bf-f7d2359a5217"}},"capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"repository":{"url":"git+https://github.com/capawesome-team/capacitor-plugins.git","type":"git"},"_npmVersion":"11.16.0","description":"Capacitor plugin for the App Tracking Transparency framework on iOS.","directories":{},"_nodeVersion":"24.18.0","eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"8.57.0","rimraf":"6.1.2","rollup":"4.53.3","swiftlint":"2.0.0","typescript":"5.9.3","@capacitor/cli":"8.0.0","@capacitor/ios":"8.0.0","@capacitor/core":"8.0.0","@capacitor/docgen":"0.3.1","@capacitor/android":"8.0.0","@ionic/eslint-config":"0.4.0","prettier-plugin-java":"2.6.7"},"peerDependencies":{"@capacitor/core":">=8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/capacitor-app-tracking-transparency_0.1.0_1784015488313_0.8755877633107749","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@capawesome/capacitor-app-tracking-transparency","version":"0.1.1","keywords":["capacitor","plugin","native","capacitor-plugin","app tracking transparency","att","idfa","advertising identifier","tracking permission","tracking authorization","ios tracking"],"author":{"name":"Robin Genz","email":"mail@robingenz.dev"},"license":"MIT","_id":"@capawesome/capacitor-app-tracking-transparency@0.1.1","maintainers":[{"name":"robingenz","email":"mail@robingenz.dev"}],"homepage":"https://capawesome.io/docs/sdks/capacitor/app-tracking-transparency/","bugs":{"url":"https://github.com/capawesome-team/capacitor-plugins/issues"},"dist":{"shasum":"422fd5c9edae2b6f846e6f9dc450b36a0f5cce9e","tarball":"https://registry.npmjs.org/@capawesome/capacitor-app-tracking-transparency/-/capacitor-app-tracking-transparency-0.1.1.tgz","fileCount":31,"integrity":"sha512-30e1ttdVZGNGHerctKjOOrAT6XB43aqXC0RrJkJ7r3evVS8pXgfJN02EeFgb3om5f1XUUbt6umxbhsZRvEx18Q==","signatures":[{"sig":"MEYCIQDleIus/bLfAAPynePJjA8gnzBIzvOFi1nmFpFV2HWumAIhAJZ5lEy1u7A45AbEOQfTL2egOtRC1zgp4sTpxAewM2SP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@capawesome%2fcapacitor-app-tracking-transparency@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":46972},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","funding":[{"url":"https://github.com/sponsors/capawesome-team/","type":"github"},{"url":"https://opencollective.com/capawesome","type":"opencollective"}],"gitHead":"3e61f4b412f9f3f512c21169bb135bbb23a67e6d","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write && npm run swiftlint -- --fix --format","lint":"npm run eslint && npm run prettier -- --check && npm run swiftlint -- lint","build":"npm run clean && npm run docgen && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api AppTrackingTransparencyPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext ts","verify":"npm run verify:ios && npm run verify:android && npm run verify:web","prettier":"prettier \"**/*.{css,html,ts,js,java}\"","swiftlint":"node-swiftlint","verify:ios":"cd ios && pod install && xcodebuild -workspace Plugin.xcworkspace -scheme Plugin -destination generic/platform=iOS && cd ..","verify:web":"npm run build","prepublishOnly":"npm run build","verify:android":"cd android && ./gradlew clean build test && cd ..","ios:pod:install":"cd ios && pod install --repo-update && cd ..","ios:spm:install":"cd ios && swift package resolve && cd .."},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:259aacb8-09e9-4347-80bf-f7d2359a5217"}},"capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"repository":{"url":"git+https://github.com/capawesome-team/capacitor-plugins.git","type":"git"},"_npmVersion":"11.16.0","description":"Capacitor plugin for the App Tracking Transparency framework on iOS.","directories":{},"_nodeVersion":"24.18.0","eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"8.57.0","rimraf":"6.1.2","rollup":"4.53.3","swiftlint":"2.0.0","typescript":"5.9.3","@capacitor/cli":"8.0.0","@capacitor/ios":"8.0.0","@capacitor/core":"8.0.0","@capacitor/docgen":"0.3.1","@capacitor/android":"8.0.0","@ionic/eslint-config":"0.4.0","prettier-plugin-java":"2.6.7"},"peerDependencies":{"@capacitor/core":">=8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/capacitor-app-tracking-transparency_0.1.1_1784102941510_0.26668641563302486","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@capawesome/capacitor-app-tracking-transparency","version":"0.1.2","description":"Capacitor plugin for the App Tracking Transparency framework on iOS.","main":"dist/plugin.cjs.js","module":"dist/esm/index.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","author":{"name":"Robin Genz","email":"mail@robingenz.dev"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/capawesome-team/capacitor-plugins.git"},"bugs":{"url":"https://github.com/capawesome-team/capacitor-plugins/issues"},"funding":[{"type":"github","url":"https://github.com/sponsors/capawesome-team/"},{"type":"opencollective","url":"https://opencollective.com/capawesome"}],"homepage":"https://capawesome.io/docs/sdks/capacitor/app-tracking-transparency/","keywords":["capacitor","plugin","native","capacitor-plugin","app tracking transparency","att","idfa","advertising identifier","tracking permission","tracking authorization","ios tracking"],"scripts":{"verify":"npm run verify:ios && npm run verify:android && npm run verify:web","verify:ios":"cd ios && pod install && xcodebuild -workspace Plugin.xcworkspace -scheme Plugin -destination generic/platform=iOS && cd ..","verify:android":"cd android && ./gradlew clean build test && cd ..","verify:web":"npm run build","lint":"npm run eslint && npm run prettier -- --check && npm run swiftlint -- lint","fmt":"npm run eslint -- --fix && npm run prettier -- --write && npm run swiftlint -- --fix --format","eslint":"eslint . --ext ts","prettier":"prettier \"**/*.{css,html,ts,js,java}\"","swiftlint":"node-swiftlint","docgen":"docgen --api AppTrackingTransparencyPlugin --output-readme README.md --output-json dist/docs.json","build":"npm run clean && npm run docgen && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","ios:pod:install":"cd ios && pod install --repo-update && cd ..","ios:spm:install":"cd ios && swift package resolve && cd ..","prepublishOnly":"npm run build"},"devDependencies":{"@capacitor/android":"8.0.0","@capacitor/cli":"8.4.2","@capacitor/core":"8.0.0","@capacitor/docgen":"0.3.1","@capacitor/ios":"8.0.0","@ionic/eslint-config":"0.4.0","eslint":"8.57.0","prettier-plugin-java":"2.9.7","rimraf":"6.1.2","rollup":"4.62.3","swiftlint":"2.0.0","typescript":"5.9.3"},"peerDependencies":{"@capacitor/core":">=8.0.0"},"eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"publishConfig":{"access":"public"},"gitHead":"7c1937ed10b7de86ca2c1cdc3539a2735fd69a00","_id":"@capawesome/capacitor-app-tracking-transparency@0.1.2","_nodeVersion":"24.19.0","_npmVersion":"11.17.0","dist":{"integrity":"sha512-eg+g3xm7ppzdH9MTnutdShllZycObnXPamAWlQ27CVdxc2lWGZfy/ZV3JXuCnraZnkXyni6JUOXxvs/a/bVKgw==","shasum":"499803ec8afe2d38a9a4c2c3efa3148a86acbb10","tarball":"https://registry.npmjs.org/@capawesome/capacitor-app-tracking-transparency/-/capacitor-app-tracking-transparency-0.1.2.tgz","fileCount":31,"unpackedSize":46920,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@capawesome%2fcapacitor-app-tracking-transparency@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDIR+icbwxBJWl8wwmpb6sfqbPnBoeR+BqNQqFdu0mNMgIhALg3VccTxmB/LyYS8aZ1bSV7Y8rPIzEwfS7mjMoYtO8h"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:259aacb8-09e9-4347-80bf-f7d2359a5217"}},"directories":{},"maintainers":[{"name":"robingenz","email":"mail@robingenz.dev"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/capacitor-app-tracking-transparency_0.1.2_1788337309615_0.3516445951614102"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-07T06:20:25.767Z","modified":"2026-09-02T08:21:50.093Z","0.0.1":"2026-07-07T06:20:26.121Z","0.1.0":"2026-07-14T07:51:28.457Z","0.1.1":"2026-07-15T08:09:01.666Z","0.1.2":"2026-09-02T08:21:49.750Z"},"bugs":{"url":"https://github.com/capawesome-team/capacitor-plugins/issues"},"author":{"name":"Robin Genz","email":"mail@robingenz.dev"},"license":"MIT","homepage":"https://capawesome.io/docs/sdks/capacitor/app-tracking-transparency/","keywords":["capacitor","plugin","native","capacitor-plugin","app tracking transparency","att","idfa","advertising identifier","tracking permission","tracking authorization","ios tracking"],"repository":{"type":"git","url":"git+https://github.com/capawesome-team/capacitor-plugins.git"},"description":"Capacitor plugin for the App Tracking Transparency framework on iOS.","maintainers":[{"name":"robingenz","email":"mail@robingenz.dev"}],"readme":"# Capacitor App Tracking Transparency Plugin\n\nCapacitor plugin for the [App Tracking Transparency](https://developer.apple.com/documentation/apptrackingtransparency) framework.\n\n<div class=\"capawesome-z29o10a\">\n  <a href=\"https://cloud.capawesome.io/\" target=\"_blank\">\n    <img alt=\"Deliver Live Updates to your Capacitor app with Capawesome Cloud\" src=\"https://cloud.capawesome.io/assets/banners/cloud-build-and-deploy-capacitor-apps.png?t=1\" />\n  </a>\n</div>\n\n## Features\n\nThe Capacitor App Tracking Transparency plugin is one of the most complete tracking authorization solutions for Capacitor apps. Here are some of the key features:\n\n- 🔒 **Authorization status**: Read the current tracking authorization status.\n- 🙋 **Permission request**: Present the system tracking authorization prompt.\n- 🆔 **Advertising identifier**: Read the advertising identifier (IDFA) when authorized.\n- 🤝 **Compatibility**: Works alongside the [Permissions](https://capawesome.io/docs/sdks/capacitor/permissions/) plugin.\n- 📦 **CocoaPods & SPM**: Supports CocoaPods and Swift Package Manager for iOS.\n- 🔁 **Up-to-date**: Always supports the latest Capacitor version.\n\nMissing a feature? Just [open an issue](https://github.com/capawesome-team/capacitor-plugins/issues) and we'll take a look!\n\n## Use Cases\n\nThe App Tracking Transparency plugin is typically used whenever an iOS app collects data for tracking purposes, for example:\n\n- **Personalized ads**: Request tracking permission before serving personalized ads to the user.\n- **Ad attribution**: Read the advertising identifier (IDFA) to attribute app installs to ad campaigns once the user has authorized tracking.\n- **Conditional tracking**: Check the current tracking authorization status and only enable tracking-related features when the status is `authorized`.\n- **App Review compliance**: Present the system tracking authorization prompt as required by Apple for any app that tracks users.\n\n## Compatibility\n\n| Plugin Version | Capacitor Version | Status         |\n| -------------- | ----------------- | -------------- |\n| 0.x.x          | >=8.x.x           | Active support |\n\n## Installation\n\nYou can use our **AI-Assisted Setup** to install the plugin.\nAdd the [Capawesome Skills](https://github.com/capawesome-team/skills) to your AI tool using the following command:\n\n```bash\nnpx skills add capawesome-team/skills --skill capacitor-plugins\n```\n\nThen use the following prompt:\n\n```\n Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-app-tracking-transparency` plugin in my project.\n```\n\nIf you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below:\n\n```bash\nnpm install @capawesome/capacitor-app-tracking-transparency\nnpx cap sync\n```\n\nThis plugin is only available on **iOS**. On Android and Web, all methods reject as unimplemented.\n\n### iOS\n\n#### Privacy Descriptions\n\nThe `NSUserTrackingUsageDescription` key must be added to the `Info.plist` file of your app. Otherwise, the `requestPermission(...)` method will reject with an error.\n\n```xml\n<key>NSUserTrackingUsageDescription</key>\n<string>Your data will be used to deliver personalized ads to you.</string>\n```\n\nThe purpose string must clearly explain why your app is requesting permission to track the user. See the [Apple documentation](https://developer.apple.com/documentation/bundleresources/information-property-list/nsusertrackingusagedescription) for more information.\n\n## Configuration\n\nNo configuration required for this plugin.\n\n## Usage\n\nThe following examples show how to check the tracking authorization status, request tracking permission, and read the advertising identifier.\n\n### Check the tracking authorization status\n\nRead the current tracking authorization status, for example to decide whether tracking-related features should be enabled. Only available on iOS:\n\n```typescript\nimport { AppTrackingTransparency } from '@capawesome/capacitor-app-tracking-transparency';\n\nconst getStatus = async () => {\n  const { status } = await AppTrackingTransparency.getStatus();\n  return status;\n};\n```\n\n### Request tracking permission\n\nPresent the system tracking authorization prompt. The prompt is only shown once per install while the status is `notDetermined`; afterwards, the method resolves with the existing status. Only available on iOS:\n\n```typescript\nimport { AppTrackingTransparency } from '@capawesome/capacitor-app-tracking-transparency';\n\nconst requestPermission = async () => {\n  const { status } = await AppTrackingTransparency.requestPermission();\n  return status;\n};\n```\n\n### Read the advertising identifier\n\nRead the advertising identifier (IDFA) of the device. It is only available if the tracking authorization status is `authorized`; otherwise, `null` is returned. Only available on iOS:\n\n```typescript\nimport { AppTrackingTransparency } from '@capawesome/capacitor-app-tracking-transparency';\n\nconst getAdvertisingIdentifier = async () => {\n  const { advertisingIdentifier } =\n    await AppTrackingTransparency.getAdvertisingIdentifier();\n  return advertisingIdentifier;\n};\n```\n\n## API\n\n<docgen-index>\n\n* [`getAdvertisingIdentifier()`](#getadvertisingidentifier)\n* [`getStatus()`](#getstatus)\n* [`requestPermission()`](#requestpermission)\n* [Interfaces](#interfaces)\n* [Type Aliases](#type-aliases)\n\n</docgen-index>\n\n<docgen-api>\n<!--Update the source file JSDoc comments and rerun docgen to update the docs below-->\n\n### getAdvertisingIdentifier()\n\n```typescript\ngetAdvertisingIdentifier() => Promise<GetAdvertisingIdentifierResult>\n```\n\nGet the advertising identifier (IDFA) of the device.\n\nThe advertising identifier is only available if the tracking authorization\nstatus is `authorized`. Otherwise, `null` is returned.\n\n**Note**: The iOS Simulator always returns `null`, even if the tracking\nauthorization status is `authorized`. Use a real device to test this method.\n\nOnly available on iOS.\n\n**Returns:** <code>Promise&lt;<a href=\"#getadvertisingidentifierresult\">GetAdvertisingIdentifierResult</a>&gt;</code>\n\n**Since:** 0.1.0\n\n--------------------\n\n\n### getStatus()\n\n```typescript\ngetStatus() => Promise<GetStatusResult>\n```\n\nGet the current tracking authorization status.\n\nOnly available on iOS.\n\n**Returns:** <code>Promise&lt;<a href=\"#getstatusresult\">GetStatusResult</a>&gt;</code>\n\n**Since:** 0.1.0\n\n--------------------\n\n\n### requestPermission()\n\n```typescript\nrequestPermission() => Promise<RequestPermissionResult>\n```\n\nRequest permission to track the user.\n\nThis will present the system tracking authorization prompt if the status\nhas not been determined yet. The prompt is only shown once per install.\n\nThe `NSUserTrackingUsageDescription` key must be added to the `Info.plist`\nfile of your app.\n\nOnly available on iOS.\n\n**Returns:** <code>Promise&lt;<a href=\"#requestpermissionresult\">RequestPermissionResult</a>&gt;</code>\n\n**Since:** 0.1.0\n\n--------------------\n\n\n### Interfaces\n\n\n#### GetAdvertisingIdentifierResult\n\n| Prop                        | Type                        | Description                                                                                                                                                                                                           | Since |\n| --------------------------- | --------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----- |\n| **`advertisingIdentifier`** | <code>string \\| null</code> | The advertising identifier (IDFA) of the device. Returns `null` if the tracking authorization status is not `authorized` or if no advertising identifier is available, which is always the case on the iOS Simulator. | 0.1.0 |\n\n\n#### GetStatusResult\n\n| Prop         | Type                                                      | Description                                | Since |\n| ------------ | --------------------------------------------------------- | ------------------------------------------ | ----- |\n| **`status`** | <code><a href=\"#trackingstatus\">TrackingStatus</a></code> | The current tracking authorization status. | 0.1.0 |\n\n\n#### RequestPermissionResult\n\n| Prop         | Type                                                      | Description                                          | Since |\n| ------------ | --------------------------------------------------------- | ---------------------------------------------------- | ----- |\n| **`status`** | <code><a href=\"#trackingstatus\">TrackingStatus</a></code> | The tracking authorization status after the request. | 0.1.0 |\n\n\n### Type Aliases\n\n\n#### TrackingStatus\n\nThe tracking authorization status.\n\n- `authorized`: The user authorized access to app-related data for tracking.\n- `denied`: The user denied access to app-related data for tracking.\n- `notDetermined`: The user has not yet received a tracking authorization request.\n- `restricted`: Tracking authorization is restricted and cannot be changed by the user.\n\n<code>'authorized' | 'denied' | 'notDetermined' | 'restricted'</code>\n\n</docgen-api>\n\n## App Review Guidance\n\nApple requires that any app that tracks users requests permission via the App Tracking Transparency framework. Keep the following guidelines in mind to avoid App Review rejections:\n\n- **Prompt timing**: Call `requestPermission(...)` only when the user is in a context where tracking makes sense. The system prompt is only shown once per install while the status is `notDetermined`. Calling the method again afterwards resolves with the existing status without showing the prompt.\n- **Purpose string**: The `NSUserTrackingUsageDescription` purpose string must accurately describe how the collected data is used. Vague or misleading descriptions are a common reason for rejection.\n- **Advertising identifier**: The advertising identifier (IDFA) is only available while the status is `authorized`. In all other cases, `getAdvertisingIdentifier(...)` returns `null`.\n- **Simulator**: The iOS Simulator never provides an advertising identifier, so `getAdvertisingIdentifier(...)` always returns `null` there, even if the status is `authorized`. Use a real device to test the advertising identifier.\n\n## FAQ\n\n### How is this plugin different from other similar plugins?\n\nIt wraps Apple's App Tracking Transparency framework in a small, fully typed API: read the current authorization status, present the system prompt, and read the advertising identifier (IDFA) once the user has authorized tracking. It also ships focused App Review guidance on prompt timing, purpose strings, and simulator behavior — the details that most often decide whether a tracking-enabled app is approved. It supports CocoaPods and Swift Package Manager and is actively maintained against the latest Capacitor version.\n\n### Does this plugin work on Android or Web?\n\nNo, the App Tracking Transparency framework is an iOS-only concept. The plugin is only available on iOS; on Android and Web, all methods reject as unimplemented.\n\n### Why does the requestPermission method reject with an error?\n\nThe most common reason is a missing `NSUserTrackingUsageDescription` key in your app's `Info.plist` file. This key is required for the system tracking authorization prompt and its purpose string must clearly explain why your app is requesting permission to track the user. See the [Installation](#installation) section for details.\n\n### Why is the tracking authorization prompt not shown?\n\nThe system prompt is only shown once per install while the tracking authorization status is `notDetermined`. If the user has already responded to the prompt, calling `requestPermission()` again resolves with the existing status without showing the prompt. To test the prompt again, reinstall the app.\n\n### Why does getAdvertisingIdentifier return null?\n\nThe advertising identifier (IDFA) is only available if the tracking authorization status is `authorized`; in all other cases, `null` is returned. Additionally, the iOS Simulator never provides an advertising identifier, even if the status is `authorized`, so use a real device to test this method.\n\n### Can I use this plugin with Ionic, React, Vue or Angular?\n\nYes, the plugin is framework-agnostic. It works in any Capacitor app regardless of the web framework, including Ionic with Angular, React, or Vue, as well as plain JavaScript projects.\n\n## Related Plugins\n\n- [Permissions](https://capawesome.io/docs/sdks/capacitor/permissions/): Check and request device permissions with a unified API.\n- [Privacy Screen](https://capawesome.io/docs/sdks/capacitor/privacy-screen/): Hide sensitive app content in the app switcher and block screenshots.\n\n## Newsletter\n\nStay up to date with the latest news and updates about the Capawesome, Capacitor, and Ionic ecosystem by subscribing to our [Capawesome Newsletter](https://cloud.capawesome.io/newsletter/).\n\n## Changelog\n\nSee [CHANGELOG.md](https://github.com/capawesome-team/capacitor-plugins/blob/main/packages/app-tracking-transparency/CHANGELOG.md).\n\n## License\n\nSee [LICENSE](https://github.com/capawesome-team/capacitor-plugins/blob/main/packages/app-tracking-transparency/LICENSE).\n","readmeFilename":"README.md"}