프로앤트 | N번의 도전

📱 React Native에서 iOS ATT(App Tracking Transparency) 구현하기 본문

개발

📱 React Native에서 iOS ATT(App Tracking Transparency) 구현하기

프로앤트 2025. 5. 9. 17:47

회사에서 사용하고 있는 앱에 애드몹을 추가 개발하게 되면서 이번에 IOS에 ATT라는 것을 추가하기로 했습니다.

 

그러면 ATT란 무엇인가?

**ATT(App Tracking Transparency)**는 iOS 앱이 **사용자의 광고 식별자(IDFA)**를 사용하여

타 앱이나 웹사이트에서의 행동을 추적하려 할 때, 반드시 사용자에게 명시적으로 허락을 받도록 요구하는 정책

 

이라고 하는데 흔히들 많이 봤던 아래와 같은 이미지의 요청이 뜨는걸 말합니다.

 

 

 

IDFA(Identifier for Advertisers)는 사용자의 디바이스에 할당된 고유 식별자로, 광고주들이 광고 성과 추적이나 리타겟팅 광고 등에 사용 합니다.

 

ATT 이전에는 기본적으로 IDFA를 사용할 수 있었고, 사용자가 설정에서 수동으로 비활성화해야 했지만, ATT 이후에는 사용자가 ‘명시적으로 동의’하지 않으면 사용할 수 없게 되었습니다.

 

 

 

 

ATT의 동작 방식

 

  1. 앱이 실행되면 TrackingAuthorizationStatus를 확인
  2. requestTrackingAuthorization()을 호출하면 아래와 같은 팝업이 사용자에게 노출됨:
“이 앱이 다른 회사의 앱 및 웹사이트에서 사용자의 활동을 추적하는 것을 허용하시겠습니까?”

 

  1. 사용자가 **“허용”**을 선택하면 IDFA 접근 가능
  2. **“앱에 추적 금지 요청”**을 선택하면 IDFA는 0값으로 반환되고, 추적 불가

 

 

설치 과정

1. 라이브러리 설치

npm install react-native-tracking-transparency
# 또는
yarn add react-native-tracking-transparency

 

 

2. IOS >  Info.plist 파일 수정

<key>NSUserTrackingUsageDescription</key>

<string>맞춤형 광고 제공을 위해 다른 앱과 웹사이트에서의 활동을 추적할 수 있도록 허용해주세요.</string>

 

3. 권한 요청 코드 추가

import { requestTrackingPermission, getTrackingStatus } from 'react-native-tracking-transparency';

import { Platform } from 'react-native';



const requestATT = async () => {

  if (Platform.OS === 'ios') {

    const status = await getTrackingStatus();



    if (status === 'not-determined') {

      const newStatus = await requestTrackingPermission();



      if (newStatus === 'authorized') {

        console.log('✅ 추적 허용됨');

      } else {

        console.log('❌ 추적 거부됨');

      }

    } else {

      console.log('현재 상태:', status);

    }

  }

};

 

4. 앱 실행 시점에 호출하기

useEffect(() => {

  requestATT();

}, []);

 

ATT는 iOS 사용자 보호를 위한 중요한 정책입니다.

사용자의 신뢰를 얻는 메시지 작성, 권한 요청 시점 조율, 그리고 SDK 초기화 타이밍이 핵심 포인트입니다.

이제 React Native에서도 ATT 대응은 선택이 아닌 필수입니다. 위 단계를 참고해 iOS 앱에서 ATT를 적용했습니다.