Flutter/기본

[Flutter] IOS App Tracking Transparency 요청

주톨 2024. 6. 26. 22:35
728x90

 

 

 

App Tracking Transparency(ATT)는 iOS 14.5, iPadOS 14.5, tvOS 14.5부터 도입된 Apple의 프레임워크로, 앱 개발자가 사용자의 동의 없이 앱 사용 데이터를 추적하거나 타사와 공유하는 것을 제한합니다. ATT는 사용자에게 개인 정보 보호에 대한 더 많은 제어 권한을 제공하며, 앱 개발자는 사용자의 명시적 동의를 얻어야 앱 사용 데이터를 추적하거나 광고 타겟팅에 활용할 수 있습니다.

 

사용자를 추적하기 위해 데이터를 수집하는 앱은 App Tracking Transparency를 사용하여 사용자 활동을 추적하기 전에 사용자의 허가를 요청하지 않으면 IOS 앱 심사가 실패 됩니다.

 

 

1.  패키지 설치

https://pub.dev/packages/permission_handler/install

 

permission_handler install | Flutter package

Permission plugin for Flutter. This plugin provides a cross-platform (iOS, Android) API to request and check permissions.

pub.dev

 

해당 패키지를 사용해서 App Tracking Transparency 요청 작업을 하겠습니다.

 

 

 

2. Podfile 수정

 

 

post_install do |installer|
  installer.pods_project.targets.each do |target|
    flutter_additional_ios_build_settings(target)
  end
end

 

ios > Podfile의 파일을 보면 위와 같은 코드가 기본적으로 생성되어 있을 겁니다. 해당 코드에 아래처럼 코드를 추가해 주세요.

해당 코드는 위에 패키지 설명에 자세히 설명되어 있습니다.

 

post_install do |installer|
  installer.pods_project.targets.each do |target|
    flutter_additional_ios_build_settings(target)

    target.build_configurations.each do |config|
      config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= [
        '$(inherited)',

        ## dart: PermissionGroup.appTrackingTransparency
        'PERMISSION_APP_TRACKING_TRANSPARENCY=1',
      ]

    end
  end
end

 

 

 

3.  Info.plist 수정

 

   <key>NSUserTrackingUsageDescription</key>
   <string>이 식별자는 개인 맞춤형 광고를 제공하는 데 사용됩니다.</string>

 

ios > Runner > Info.plist 파일에 위 코드를 적당한 위치에 넣어주시면 됩니다.  

 

 

 

4.  ATT 요청

if(defaultTargetPlatform == TargetPlatform.iOS) {
  Permission.appTrackingTransparency.request();
}

 

자신의 프로젝트에 적절한 앱 시작 지점에 해당 코드를 실행하면 됩니다.

 

 

 

5. 추가로

IOS 권한 설명은 서비스하는 국가 언어로 해야 합니다. 아니면 리젝 당하더라고요. 다양한 국가에 서비스한다면 아래 글을 참조하시면 좋을 것 같습니다.

 

https://asbear.tistory.com/186

 

[iOS 어플 현지화] 어플 이름과 권한 메시지 현지화 하기

플러터 iOS 앱의 이름과 권한 메시지를 현지화 하기 위해서는 XCODE 를 사용하시면 됩니다. 플러터 기준으로 설명을 하긴 하지만, iOS 어플도 동일 방법을 사용하면 됩니다. 사실 이 방법이 네이티

asbear.tistory.com