Skip to main content

Apple App Tracking Transparency

Apple implemented new privacy control policies starting with iOS and iPadOS 14.5. One privacy control mechanism that requires specific attention is the App Tracking Transparency (ATT) user permission request. Ensuring the ATT permissions prompt appears reliably after install will allow users to make decisions about their data use and satisfy the Apple requirements for App Store approval and distribution. Read more about Apple privacy controls on Apple's website.

Requirement​

The App Tracking Transparency permissions request must be presented to the user upon first open flow after install. It can be presented at any time but it is recommended that it occurs before entering the Skillz UI.

Implementation​

The implementation of the ATT prompt and its precise location within the user flow is up to the developer. Considerations regarding user experience and optimizing for opt-in rate may influence the final technical implementation. The Skillz SDK handles the description text of the prompt in the property list (NSUserTrackingUsageDescription), automatically.

The samples below are basic and can be further customized based on the desired user experience or need for additional app logic. The permission request calls will only trigger the permission modal once per install, so subsequent requests are relatively safe and will be ignored by iOS/iPadOS.

Samples​

If implementing in Unity script, use the Unity iOS 14 Advertising Support package to interact with the Apple App Tracking Transparency framework.

Here is an example of a a simple button handler triggering the prompt immediately before launching the Skillz UI:

GameController.cs
using System;
using UnityEngine;

#if UNITY_IOS
using Unity.Advertisement.IosSupport;
#endif

public class GameController : MonoBehaviour
{
public void StartButton()
{

#if UNITY_IOS
Version currentVersion = new Version(UnityEngine.iOS.Device.systemVersion);
Version ios14 = new Version("14.0");

if (currentVersion >= ios14 && ATTrackingStatusBinding.GetAuthorizationTrackingStatus() ==
ATTrackingStatusBinding.AuthorizationTrackingStatus.NOT_DETERMINED)
{
ATTrackingStatusBinding.RequestAuthorizationTracking();
}
#endif

SkillzCrossPlatform.LaunchSkillz(new YourSkillzMatchDelegate());
}
}

Testing​

  1. Uninstall all copies of the app from the device
  2. Install the target app/game on an iOS or iPadOS device
    • The build can utilize Skillz sandbox or production environments
    • The app can be deployed directly via Xcode or one of the many other distribution methods available, including TestFlight
  3. Launch the app and click through to launch Skillz

The App Tracking Transparency prompt should present itself during the above flow:



Regardless of the user selection, once the prompt has been presented, the Allow Tracking switch should now be present in Settings for the app:



tip

If the iOS/iPadOS app settings do not show the Allow Tracking switch and the test device on iOS 14 or later, it means tracking permission has not yet been presented to the user