App Tracking Transparency for Unity - iOS 14 (IDFA)

This Unity plugin allows your app/game to easily show the iOS 14 native App Tracking Transparency popup

View the Project on GitHub Balaso-Software/app-tracking-transparency-for-unity

Introduction

This plugin allows your app/game to easily show the iOS 14 native App Tracking Transparency popup to your users, meeting Apple’s requirement since iOS 14.

drawing

Installation

Unity Asset Store

Get it on Unity Asset Store

Settings

Find the Settings window in your Unity Editor under Window/Balaso/App Tracking for Transparency/Settings

drawing

Usage

Obtain current app-tracking authorization status

You can obtain, at any time, the current app-tracking authorization status by accessing AppTrackingTransparency.TrackingAuthorizationStatus property

AppTrackingTransparency.AuthorizationStatus currentStatus = AppTrackingTransparency.TrackingAuthorizationStatus;
Debug.Log(string.Format("Current authorization status: {0}", currentStatus.ToString()));

Present the app-tracking authorization request to the end user

Register your callback to get notified with the authorization result and request tracking authorization

AppTrackingTransparency.OnAuthorizationRequestDone += OnAuthorizationRequestDone;
AppTrackingTransparency.RequestTrackingAuthorization();

SkAdNetwork

Call RegisterAppForAdNetworkAttribution or UpdateConversionValue at anytime to support SkAdNetwork attribution system

AppTrackingTransparency.RegisterAppForAdNetworkAttribution();
AppTrackingTransparency.UpdateConversionValue(3);

Example

using Balaso;
using UnityEngine;

/// <summary>
/// Example MonoBehaviour class requesting iOS Tracking Authorization
/// </summary>
public class AppTrackingTransparencyExample : MonoBehaviour
{
    private void Awake()
    {
#if UNITY_IOS
        AppTrackingTransparency.RegisterAppForAdNetworkAttribution();
        AppTrackingTransparency.UpdateConversionValue(3);
#endif
    }

    void Start()
    {
#if UNITY_IOS
        AppTrackingTransparency.OnAuthorizationRequestDone += OnAuthorizationRequestDone;

        AppTrackingTransparency.AuthorizationStatus currentStatus = AppTrackingTransparency.TrackingAuthorizationStatus;
        Debug.Log(string.Format("Current authorization status: {0}", currentStatus.ToString()));
        if (currentStatus != AppTrackingTransparency.AuthorizationStatus.AUTHORIZED)
        {
            Debug.Log("Requesting authorization...");
            AppTrackingTransparency.RequestTrackingAuthorization();
        }
#endif
    }

#if UNITY_IOS

    /// <summary>
    /// Callback invoked with the user's decision
    /// </summary>
    /// <param name="status"></param>
    private void OnAuthorizationRequestDone(AppTrackingTransparency.AuthorizationStatus status)
    {
        switch(status)
        {
            case AppTrackingTransparency.AuthorizationStatus.NOT_DETERMINED:
                Debug.Log("AuthorizationStatus: NOT_DETERMINED");
                break;
            case AppTrackingTransparency.AuthorizationStatus.RESTRICTED:
                Debug.Log("AuthorizationStatus: RESTRICTED");
                break;
            case AppTrackingTransparency.AuthorizationStatus.DENIED:
                Debug.Log("AuthorizationStatus: DENIED");
                break;
            case AppTrackingTransparency.AuthorizationStatus.AUTHORIZED:
                Debug.Log("AuthorizationStatus: AUTHORIZED");
                break;
        }

        // Obtain IDFA
        Debug.Log($"IDFA: {AppTrackingTransparency.IdentifierForAdvertising()}");
    }
#endif
}