React Native/IOS

[React Native / iOS] iOS 14이상에서 추적 요청 팝업 띄우기 (일부 앱이 Apple의 SKAdNetwork를 사용하도록 구성되지 않았습니다 해결)

Juzero 2022. 1. 12. 00:00

안녕하세요.

 

 이번 포스팅에서는 iOS의 추적요청 동의를 받는 방법을 알아보겠습니다. 

 

iOS 14 이상에 광고를 추가하거나 사용자의 활동을 수집하기 위해서는 동의를 받아야 합니다. 

제가 개발중인 앱에도 구글 애드몹 광고가 붙어있는데, 구글 애드몹을 추가할 때에도 추적 요청 팝업을 띄워야 한다고 하네요.

 

 

이렇게 경고 알림아 떴습니다. 

 

 

그럼 바로 시작해볼게요!

 

0. 조건

Google Mobile Ads SDK 가 7.64.0 버전 이상이어야 합니다. 

 

1. npm 설치

 

아래 코드를 입력해 관련 라이브러리를 설치합니다.

 

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

 

 

2. info.plist 수정

 

info.plist에 아래 코드를 추가해주세요. 아래 코드 중 '팝업 메시지 입력' 부분에는 팝업창에 표시할 설명을 추가하시면 됩니다. 자세하게 적어야 앱 심사 승인이 나요.

<key>SKAdNetworkItems</key>
  <array>
    <dict>
      <key>SKAdNetworkIdentifier</key>
      <string>cstr6suwn9.skadnetwork</string>
    </dict>
  </array>
  
<key>NSUserTrackingUsageDescription</key>
<string>팝업 메시지 입력</string>

 

3. 코드 추가

 

앱의 최상단 파일에서 아래 코드들을 추가합니다. 

저는 App.js에 추가했습니다. 

 

설치한 라이브러리로부터 requestTrackingPermission을 import 합니다. 

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

 

 

그리고 app 함수(또는 클래스) 안에서 아래 함수를 추가하고 useEffect로 호출해줍니다. 저는 함수형 코드로 개발하기 때문에 클래스형 코드로 개발하시는 분들과 조금 다를 수 있습니다. 

 

 const checkPermissionForIOS = async () => {
    return await requestTrackingPermission();
  }

requestTrackingPermission()은 추적 허용 요청 팝업을 띄우는 함수입니다.

해당 함수가 실행하면 아래의 값들 중 하나를 return 합니다. 

 

  • 'unavailable': 안드로이드 폰이거나 iOS 버전이 14 미만일 때
  • 'denied': 사용자가 추적을 거부했을 때
  • 'authorized': 사용자가 추적을 허용했을 때
  • 'not-determined': 사용자가 아직 추적 요청 팝업에 대한 어떠한 응답도 하지 않았을 때

 

그리고, return 값이 not-determined 일 때에만 추적 허용 팝업을 띄워줍니다. 

 

 

return 값을 보고 싶다면 아래처럼 살짝 수정해주시면 됩니다. 

 

 const checkPermissionForIOS = async () => {
    const trackingStatus = await requestTrackingPermission();

    console.log(trackingStatus)
  }

 

 

 

그럼 아래처럼 팝입이 뜹니다!

 

 


참고

npm 라이브러리

구글 공식문서

 

 

 

 

+++ 추가

위 방법은 iOS 15.0 이상 버전에서는 잘 안될 겁니다!

시뮬레이터에서는 앱을 키자마자 앱 추적 요청 팝업이 잘 떴는데, Xcode에 실제 기기를 연결해서 하면 처음에 안뜨고 렌더링을 2번 이상 해야지만 떴습니다. (그래서 심사 리젝났죠)

 

대체 뭐가 문제인지 몰라서 4시간동안 한참 헤맸습니다.. 이렇게도 해보고, 저렇게도 해보고

저 커밋 메시지 보이시나요... 얼마나 답답했으면 ..ㅠ

 

결국! 방법을 찾았습니다!!

 

iOS 15.0 이상 버전에서는 앱이 active 상태가 아니라면 추적 요청 팝업이 뜨지 않는다고 하네요.

시뮬레이터는 iOS 14.3 이어서 한번에 떴고, 제 폰은 iOS 15.3이어서 한번에 안뜬 거였습니다!!

 

4시간만에 방법을 찾았습니다...

 

관련 내용은 따로 포스팅하겠습니다.