Skip to content

mahnuh/capacitor-plugin-app-tracking-transparency

Repository files navigation

capacitor-plugin-app-tracking-transparency

Capacitor plugin to request user authorization to access app-related data for tracking the user or the device. iOS only.

Read more about Apple's App Tracking Transparency framework here. Also this might be a good read.

Platform support

iOS only but with web fallback for development purposes.

Plugin versions

Version 3.x (Swift Package Manager)

Version 3.x introduces Swift Package Manager support, which is the recommended installation method for Capacitor 7 and 8.

Capacitor version Plugin version
7.x / 8.x 3.x

Version 2.x (CocoaPods)

If your project uses CocoaPods for iOS dependency management, use version 2.x. See branch v2 for documentation.

Capacitor version Plugin version
4.x / 5.x / 6.x / 7.x 2.x
3.x >= 2.0.0

Version 1.x (Legacy)

For Capacitor versions prior to 3.0.0, use plugin version 1.x. See branch v1 for documentation.

Maintainers

Maintainer GitHub
Manuel Heidrich mahnuh Sprintwerk GmbH

Install

npm install capacitor-plugin-app-tracking-transparency
npx cap sync

Configuration

Add this to your app's Info.plist and update the message according to your needs:

<key>NSUserTrackingUsageDescription</key>
<string>Your data will be used to deliver personalized ads to you.</string>

This message can be provided in multiple languages by using a InfoPlist.strings file. See the Apple docs or this stack overflow answer for help.

Example App

An example app is included in the example/ directory. To run it:

  1. Install dependencies:

    cd example
    npm install
  2. Build and sync:

    npm run build
    npx cap sync ios
  3. Open in Xcode:

    npx cap open ios
  4. Run on a simulator or device (iOS 14+)

Usage

import {
  AppTrackingTransparency,
  AppTrackingStatusResponse,
} from 'capacitor-plugin-app-tracking-transparency';

...

public async getStatus(): Promise<AppTrackingStatusResponse> {
  const response = await AppTrackingTransparency.getStatus();

  console.log(response);
  // { status: 'authorized' } for example

  return response;
}

public async requestPermission(): Promise<AppTrackingStatusResponse> {
  const response = await AppTrackingTransparency.requestPermission();

  console.log(response);
  // { status: 'authorized' } for example

  return response;
}

Both available methods return AppTrackingStatusResponse with status: AppTrackingStatus, which will be one of the following: authorized, denied, notDetermined or restricted. See Apple's docs for reference.

API

getStatus()

getStatus() => Promise<AppTrackingStatusResponse>

Returns: Promise<AppTrackingStatusResponse>


requestPermission()

requestPermission() => Promise<AppTrackingStatusResponse>

Returns: Promise<AppTrackingStatusResponse>


Type Aliases

AppTrackingStatusResponse

{ status: AppTrackingStatus }

AppTrackingStatus

'authorized' | 'denied' | 'notDetermined' | 'restricted'

Todos

  • Extend API docs

License

MIT

About

Capacitor plugin to request user authorization to access app-related data for tracking the user or the device.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors