플러팅 AI/배포

구글 애드몹을 위한 iOS TrackingPermission 설정

Solo.dev 2025. 1. 15. 19:08

iOS에서 Tracking Permission이 필요한 이유

Apple 가이드라인 2.1 만족 여부

Apple의 가이드라인 2.1은 AppTrackingTransparency 프레임워크를 통해 사용자의 추적 권한을 명시적으로 요청하도록 요구합니다. 특히, iOS 14 이상 및 iPadOS 18.2.1 환경에서 권한 요청이 표시되지 않으면 심사에서 거절될 수 있습니다. 위에서 설명한 설정은 이 요구사항을 충족하며, 추적 권한 요청이 iPadOS를 포함한 모든 iOS 환경에서 올바르게 표시되도록 보장합니다. 구글 애드몹(Google AdMob)과 같은 타겟팅 광고 네트워크는 **사용자의 IDFA(Identifier for Advertisers)**를 사용하여 개인화된 광고를 제공합니다. 하지만, iOS 14 이상부터 Apple은 사용자의 개인정보 보호를 강화하기 위해 앱이 IDFA를 활용하려면 AppTrackingTransparency 프레임워크를 통해 명시적인 동의를 받도록 요구합니다.

이를 구현하지 않으면:

  1. 개인화되지 않은 일반 광고만 제공되어 광고 수익이 감소할 수 있습니다.
  2. Apple의 심사를 통과하지 못할 가능성이 있습니다.

따라서, 애드몹을 사용하여 최대한의 광고 수익을 얻고 Apple의 가이드라인을 준수하려면, 사용자에게 추적 권한을 요청하는 것이 필수입니다.


TrackingPermission 구현 방법

react-native-tracking-transparency 라이브러리를 사용하여 간단하게 iOS 추적 권한을 요청할 수 있습니다. 아래는 설정과 사용 방법입니다.

1. 라이브러리 설치

먼저, react-native-tracking-transparency 패키지를 설치합니다:

npm install react-native-tracking-transparency
cd ios
pod install

2. Info.plist 설정 추가

Info.plist 파일에 아래의 키를 추가하여 추적 권한 요청 시 표시할 메시지를 정의합니다:

<key>NSUserTrackingUsageDescription</key>
<string>개인화된 광고 제공을 위해 추적 권한이 필요합니다.</string>

3. TrackingPermission 컴포넌트 구현

아래는 TrackingPermission 컴포넌트의 구현 예제입니다. 중요: 최신 버전에서는 requestTrackingPermission을 사용해야 합니다.

import React, { useEffect } from 'react';
import { Platform, Alert } from 'react-native';
import { requestTrackingPermission } from 'react-native-tracking-transparency';

const TrackingPermission = () => {
    useEffect(() => {
        const requestPermission = async () => {
            if (Platform.OS === 'ios') {
                try {
                    const status = await requestTrackingPermission();
                    console.log('Tracking Authorization Status:', status);

                    if (status === 'authorized') {
                        console.log('Tracking authorized');
                    } else {
                        console.log('Tracking not authorized');
                        Alert.alert(
                            'Tracking 권한 필요',
                            '개인화 광고 제공을 위해 권한이 필요합니다.',
                            [{ text: '확인' }]
                        );
                    }
                } catch (error) {
                    console.error('Tracking 권한 요청 오류:', error);
                }
            } else {
                console.log('iOS에서만 Tracking 권한 요청이 필요합니다.');
            }
        };

        requestPermission();
    }, []);

    return null;
};

export default TrackingPermission;

requestTrackingPermission 사용 이유

과거에는 requestTrackingAuthorization 함수가 사용되었으나, 최신 버전에서는 **requestTrackingPermission**으로 대체되었습니다.

주요 차이점:

  • **requestTrackingPermission**은 최신 React Native 및 라이브러리 버전과 더 잘 호환됩니다.
  • 네이티브 종속성을 처리하는 방식이 개선되었습니다.

Tip: requestTrackingPermission을 사용하는 것이 더 안전하며, 업데이트된 문서와 코드 스타일을 준수할 수 있습니다.

 


요약

  1. Tracking Permission 요청 이유: 개인화된 광고 제공 및 광고 수익 극대화.
  2. 필수 설정: Info.plist에 메시지 추가.
  3. 라이브러리 사용: react-native-tracking-transparency 설치 후 requestTrackingPermission 함수로 구현.