Unity

iOS ATT(App Tracking Transparency) 설정, 광고 추적 문제 해결 가이드

정보처리마법사 2025. 2. 25. 18:30
반응형

iOS ATT(App Tracking Transparency) 설정, 광고 추적 문제 해결 가이드

📌 내용 개요

iOS 14.5 이후, Apple의 ATT(App Tracking Transparency) 정책이 적용되면서 사용자 동의 없이 광고 추적이 불가능하게 되었습니다.
그러나 ATT 요청이 자동으로 실행되지 않으며, 개발자가 직접 설정해야 한다는 점을 놓치기 쉽습니다.

이번 포스팅에서는 ATT 요청을 설정하는 방법, 놓치기 쉬운 실수, Apple 심사에서 리젝당하지 않기 위한 주의사항을 정리합니다.


🚨 1. ATT(App Tracking Transparency) 설정이 필요한 이유

  • iOS 14.5 이상에서는 ATT 요청을 하지 않으면 광고 ID(IDFA) 접근이 불가능함.
  • Unity Ads, Google AdMob, Firebase Analytics 등 광고 SDK가 ATT 요청을 자동으로 실행하지 않음.
  • Apple 심사에서는 ATT 요청이 정상적으로 표시되는지 확인하며, 누락되면 리젝될 가능성이 있음.

⚠️ 2. 주의할 점 (놓치기 쉬운 실수)

1️⃣ NSUserTrackingUsageDescription이 Info.plist에 있어도 ATT 요청은 자동으로 실행되지 않음

  • Info.plist에 "Privacy - Tracking Usage Description"(=NSUserTrackingUsageDescription)이 있어도,
    앱이 직접 ATTrackingManager.requestTrackingAuthorization()을 호출해야만 ATT 팝업이 뜸.
  • Apple 심사에서는 ATT 요청이 없으면 리젝될 가능성이 높음.

해결 방법:
Info.plist 설정 + ATTrackingManager.requestTrackingAuthorization() 코드 추가 필요


2️⃣ ATT 요청을 하지 않으면 AdMob, Unity Ads 등의 광고 수익이 줄어들 수 있음

  • ATT 요청 없이 광고 SDK를 사용하면 IDFA(광고 식별자)를 가져오지 못함 → 타겟 광고가 불가능.
  • ATT 요청을 통해 사용자가 동의하면 광고 최적화 가능 → 광고 수익 증가.

해결 방법:
앱 실행 후 ATT 요청을 띄우도록 설정해야 함.


3️⃣ ATT 요청을 거부한 경우, 다시 뜨지 않음

  • 한 번 사용자가 "앱 추적 안 함"을 선택하면 다시 ATT 팝업이 뜨지 않음.
  • 앱을 삭제 후 재설치해야 다시 요청 가능.
  • Apple 심사팀이 ATT 팝업이 나타나지 않는다고 리젝할 가능성이 있으므로 설명 필요.

해결 방법:
Apple에 "ATT 요청이 앱을 처음 실행할 때만 표시되며, 한 번 거부하면 다시 뜨지 않는다"는 설명 추가.


💡 3. 해결 방법 (키포인트 & 팁)

1️⃣ Info.plist에 NSUserTrackingUsageDescription 추가

📌 Info.plist에 아래 항목을 추가해야 ATT 요청이 가능함.

<key>NSUserTrackingUsageDescription</key>
<string>This app requests permission to track your activity for better ad recommendations.</string>

이 문구는 ATT 팝업에서 사용자에게 표시됨.
🚀 이 설정이 없으면 ATTrackingManager.requestTrackingAuthorization()을 실행해도 ATT 팝업이 뜨지 않음.


2️⃣ 앱 실행 후 ATT 요청 코드 추가

📌 앱 실행 시 자동으로 ATT 요청을 실행하려면 아래 코드를 추가해야 함.

using UnityEngine;
using System.Runtime.InteropServices; // ✅ iOS 네이티브 기능 사용
#if UNITY_IOS
using Unity.Advertisement.IosSupport; // ✅ iOS 전용 네임스페이스 (ATT 요청)
using UnityEngine.iOS;
#endif

public class ATTRequest : MonoBehaviour
{
    void Start()
    {
        RequestTrackingPermission();
    }

    void RequestTrackingPermission()
    {
#if UNITY_IOS
        if (ATTrackingStatusBinding.GetAuthorizationTrackingStatus() == ATTrackingStatusBinding.AuthorizationTrackingStatus.NOT_DETERMINED)
        {
            ATTrackingStatusBinding.RequestAuthorizationTracking();
            Debug.Log("✅ ATT Request Sent (iOS에서 실행됨)");
        }
        else
        {
            Debug.Log($"🔍 ATT Status: {ATTrackingStatusBinding.GetAuthorizationTrackingStatus()}");
        }
#else
        Debug.Log("⚠️ ATT 요청은 iOS에서만 실행됩니다.");
#endif
    }
}

이 코드가 실행되지 않으면 ATT 요청이 표시되지 않음!


3️⃣ 특정 버튼에서 ATT 요청 실행 (설정 화면에서 요청 가능)

  • 일부 앱은 설정 화면에서 사용자가 직접 ATT 요청을 실행할 수 있도록 버튼을 추가하기도 함.
  • 예제 코드 (버튼 클릭 시 ATT 요청 실행):
public void RequestATTManually()
{
    if (ATTrackingStatusBinding.GetAuthorizationTrackingStatus() == ATTrackingStatusBinding.AuthorizationTrackingStatus.NOT_DETERMINED)
    {
        ATTrackingStatusBinding.RequestAuthorizationTracking();
        Debug.Log("✅ ATT Request Sent via Button");
    }
}​

이 코드를 버튼 이벤트에 연결하면 사용자가 직접 ATT 요청을 실행할 수 있음.


 

iOS빌드할 때 네임스페이스 없다는 에러가 뜨는데 Package Manager에서 Unity REgistry > iOS 14 Advertising Support 를 설치해야 에러가 사라짐

 

4️⃣ ATT 요청이 정상적으로 실행되는지 확인하는 방법

  1. iOS에서 앱을 삭제 후 다시 설치하여 ATT 요청이 뜨는지 확인.
  2. Xcode 콘솔에서 Debug.Log("✅ ATT Request Sent")가 출력되는지 확인.
  3. 설정 > 개인 정보 보호 > 추적에서 앱이 차단되지 않았는지 확인.

🔗 결론 & 마무리

  • 애드몹, Unity Ads 등 광고 SDK는 ATT 요청을 자동으로 실행하지 않음.
  • ATT 요청을 표시하려면 NSUserTrackingUsageDescription을 Info.plist에 추가해야 함.
  • ATTrackingManager.requestTrackingAuthorization()을 직접 호출해야 ATT 팝업이 표시됨.
  • Apple 심사에서는 ATT 요청이 없으면 리젝될 가능성이 높음.
  • 앱 삭제 후 다시 설치해야 ATT 팝업이 다시 뜸.

🚀 이 포스팅을 참고하면 ATT 설정 문제로 Apple 심사에서 리젝될 걱정을 줄일 수 있습니다! 💪

반응형