Skip to content

AppTrackingTransparency Framework - iOS 14.5

Starting with iOS 14.5, Apple requires you to declare the type of data your app is tracking and ask users for permission to track them. For this, Apple has provided the AppTrackingTransparency framework. (ATT)


Does ATT replace a CMP?

No, it does not. A CMP collects consent based on the legal requirements of a framework, such as GDPR and CCPA, which are valid in their respective jurisdiction. Where as ATT is designed to provide transparency about the tracking practices of an App. The underlying value of ATT is to empower users, by giving them the control over who can have access to their Advertising Identifier (IDFA, an ID used by advertisers to identify a unique user/device and provide personalized ads), by signaling to the app developer, that tracking practices should/should not be enabled.

How to support ATT?

  1. Drag the ATTManager game object into your scene ATT

  2. Configure ATT with a message that explains why you would like to have access to user's data, and make sure you enable the "ATT Enabled" checkmark. ATT

  3. Depending on your App Flow, you may request ATT permission whenever you deem convenient, but we recommend collecting both legal consent via the Usercentrics CMP and ATT permission in consecutive steps. The system will handle showing the popup, you will just need to call this function.

    AppTrackingTransparency.Instance.PromptForAppTrackingTransparency((status) =>
        switch (status)
            case AuthorizationStatus.AUTHORIZED:
                // You may enable tracking frameworks
            case AuthorizationStatus.DENIED:
                // You should disable tracking frameworks
            case AuthorizationStatus.NOT_DETERMINED:
                // State before prompt is shown. No further action.
            case AuthorizationStatus.RESTRICTED:
                // Restricted. See:

Handling for versions under iOS 14

Since ATT permission is not supported in versions lower than iOS 14. We will always return AUTHORIZED, if this method is called in not supported versions.

If permission has never been requested, the system will prompt the ATT pop-up, and the result will be return on the callback. Once permission has been collected, any future call to this function will directly return the permission status without presenting the pop-up.