2026년 하이브리드 앱을 위한 iOS App Tracking Transparency(ATT)와 쿠키 동의

하이브리드 모바일 앱 — 얇은 네이티브 셸이 사용자 인터페이스의 대부분을 렌더링하는 웹 뷰를 감싸는 아키텍처 — 은 항상 두 개의 프라이버시 세계에 동시에 살아왔습니다. 네이티브 셸은 iOS에서 Apple의 App Tracking Transparency(ATT) 프레임워크에 의해, Android에서는 Google의 Privacy Sandbox 로드맵에 의해 규율됩니다. 내부의 웹 뷰는 모든 브라우저에 적용되는 동일한 GDPR, ePrivacy, CCPA, CPRA 규칙에 의해 규율됩니다. 5년 동안 퍼블리셔들은 임시방편적인 심(shim)으로 이 이음새를 메우려 했고, 5년 동안 App Store 검토자와 EU 규제 기관은 거의 같은 비율로 그 땜질 작업을 거부해왔습니다. 2026년에 이르면 하이브리드 앱 내에서 ATT와 쿠키 동의가 어떻게 맞물리는지에 대한 문제는 더 이상 선택적인 배관 공사가 아닙니다 — 이것은 출시되고, 수익을 창출하고, 프라이버시 감사를 통과하는 앱과 스토어에서 제거되거나 재구축을 요구하는 벌금을 받는 앱의 차이입니다. 이 가이드는 ATT가 실제로 무엇을 제어하는지, 웹 동의에 무엇을 의도적으로 남겨두는지, 두 시스템이 모순되지 않고 일관성 있도록 권한과 동의 흐름을 어떻게 설계할지, 그리고 Apple의 검토 프로세스와 규제 기관의 감사 모두를 견뎌내는 엔지니어링 패턴에 대해 살펴봅니다.

App Tracking Transparency가 실제로 규율하는 것

ATT는 Apple이 iOS와 iPadOS에서 시행하는 권한 게이트입니다. 앱이 기기의 Identifier for Advertisers(IDFA)에 접근하거나 다른 사업자가 소유한 앱과 웹사이트 전반에서 사용자를 연결하는 추적을 수행하려면, requestTrackingAuthorization을 호출하고 사용자에게 추적을 허용하거나 거부할 것을 묻는 시스템 프롬프트를 표시해야 합니다. 사용자의 응답은 이진값이며, 설정에서 변경할 때까지 지속되고, trackingAuthorizationStatus API를 통해 앱에서 확인할 수 있습니다.

Apple의 추적 정의

Apple의 개발자 가이던스는 추적을 구체적이고 좁게 정의합니다: 타겟 광고 또는 측정을 위해 앱에서 수집한 사용자 또는 기기 데이터를 다른 회사의 앱, 웹사이트 또는 오프라인 자산에서 수집한 사용자 또는 기기 데이터와 연결하거나, 사용자 또는 기기 데이터를 데이터 브로커와 공유하는 것. 이 정의는 앱 내부에서의 데이터 자사 이용, 익명 집계 분석, 그리고 사기 방지 또는 법적 준수를 위한 처리를 의도적으로 제외합니다 — 이러한 활동은 사용자가 허용했는지 여부에 관계없이 ATT 프롬프트가 필요하지 않습니다.

ATT가 하지 않는 것

ATT는 GDPR 의미에서의 동의 관리 시스템이 아닙니다. 세분화된 목적 설정을 수집하지 않고, 정책 버전 관리가 포함된 동의 영수증을 기록하지 않으며, WKWebView 내부의 웹 공급업체에 신호를 전파하지 않고, 사용자 기기에 쿠키를 저장하거나 읽기 위한 적법한 근거 요구 사항을 충족하지 않습니다. ATT 프롬프트를 하이브리드 앱의 전체 준수 입장으로 취급하는 퍼블리셔는 벌금으로부터 규제 기관 서한 한 통 거리에 있습니다. 왜냐하면 웹 뷰 내의 쿠키 로드는 ePrivacy 하에서 별도의 이벤트이며 자체 동의 레이어가 필요하기 때문입니다.

GDPR과 ePrivacy가 WKWebView 내부에 적용되는 방식

하이브리드 앱 내의 웹 뷰는 데스크톱 브라우저에 적용되는 규칙에서 마법처럼 면제되지 않습니다. WKWebView가 엄격히 필요하지 않은 쿠키를 읽거나 쓰는 순간 ePrivacy가 발동됩니다. WKWebView가 개인 데이터를 담은 분석 또는 광고 요청을 발송하는 순간 GDPR이 발동됩니다. Apple의 컨테이너는 분석을 바꾸지 않습니다 — 바뀌는 것은 구현 표면인데, 동의 배너가 웹 뷰 내에서 렌더링되어야 하고 동의 상태가 동일한 데이터를 읽을 수 있는 네이티브 코드에서도 보여야 하기 때문입니다.

웹 뷰 내의 배너

표준 패턴은 웹사이트에서와 동일한 방식으로 WKWebView 내에 CMP 배너를 렌더링하는 것입니다. 배너는 웹 뷰의 쿠키 저장소에 쿠키를 설정하고, 페이지의 JavaScript 컨텍스트에 동의 업데이트 이벤트를 발행하며, 페이지의 분석 및 광고 태그가 읽는 Google Consent Mode v2 상태 머신을 업데이트합니다. 구현은 일반적인 웹 CMP와 다르지 않습니다 — 다른 점은 쿠키 저장소가 WKWebView로 범위가 한정되어 다른 앱이나 Safari에서 보이지 않는다는 것으로, 이는 격리에는 유용하지만 퍼블리셔가 사용자가 이미 동의한 웹사이트도 운영하는 경우에는 불리합니다.

웹 뷰와 네이티브 셸 간의 동의 공유

더 어려운 문제는 WKWebView와 네이티브 셸 사이의 브리지입니다. 네이티브 셸에는 사용자가 ATT를 허용한 후 IDFA를 읽는 자체 분석 SDK가 있을 수 있고, 웹 뷰에는 사용자가 수락했을 수도 있고 그렇지 않을 수도 있는 자체 동의 배너가 있습니다. 사용자가 ATT를 허용했지만 웹 뷰에서 광고 동의를 거부한 경우, 네이티브 SDK는 여전히 IDFA를 읽을 수 있지만 웹 뷰의 태그는 읽어서는 안 됩니다. 사용자가 ATT를 거부했지만 웹 뷰의 광고 동의를 수락한 경우, 네이티브 SDK는 차단되지만 웹 뷰의 태그는 여전히 실행되어야 합니다 — 물론 네이티브 SDK의 IDFA 기반 식별자는 브리지를 통과할 수 없습니다. 가장 깔끔한 패턴은 단일 진실의 원천 — CMP — 을 JavaScript 브리지를 통해 네이티브 셸이 앱 시작 시와 모든 동의 변경 시에 읽도록 하고, 다시 묻지 않고 CMP의 광고 결정을 따르는 병렬 ATT 프롬프트를 추가하는 것입니다.

CPRA와 미국 주법 계층

미국 퍼블리셔에게는 그림에 세 번째 계층이 있습니다. CPRA와 버지니아, 콜로라도, 코네티컷, 유타를 뒤따른 주법 군은 IDFA를 웹 쿠키와 동일하게 취급합니다 — 둘 다 판매 또는 공유가 옵트아웃 권리를 촉발시키는 개인 정보입니다. 웹 브라우저가 보내는 Global Privacy Control 헤더는 소비자를 향한 신호이고, IAB의 관련 US Privacy String을 포함한 Multi-State Privacy Agreement(MSPA)는 퍼블리셔를 향한 신호입니다. 미국에서 출시되는 하이브리드 앱은 앱 자체 내에 '내 개인 정보를 판매하거나 공유하지 마세요' 링크를 노출하고, 그 결과 발생하는 옵트아웃을 웹 뷰의 CMP와 네이티브 셸의 측정 SDK 모두에 라우팅하며, 딥 링크에서 웹 뷰로 도착하는 모든 수신 GPC 헤더를 존중해야 합니다.

하이브리드 앱 내의 어린이와 COPPA

앱이 어린이용으로 등급이 부여되었거나 어린이 사용자에 대한 합리적인 기대가 있는 경우, 미국의 COPPA와 EU의 GDPR-K 조항이 ATT와 표준 동의 위에 추가 제한을 부과합니다. IDFA는 어린이 계정에 대해 전혀 요청해서는 안 되며, 웹 뷰의 광고 동의는 기본값을 거부로 설정해야 하고, 네이티브 셸의 모든 타사 SDK는 출시 전에 COPPA 준수가 확인되어야 합니다. App Store 검토는 표준 ATT 프롬프트를 표시하는 어린이 등급 앱을 거부합니다. 이는 팀이 모든 타겟층을 위해 단일 바이너리를 빌드할 때 흔히 발생하는 구현 실수입니다.

출시 가능한 엔지니어링 패턴

App Store 검토와 EU 프라이버시 감사 모두를 통과하는 하이브리드 앱 아키텍처에는 몇 가지 반복 가능한 요소가 있습니다. WKWebView 내의 CMP 배너가 광고 동의의 진실의 원천입니다. ATT 프롬프트는 CMP가 해결된 후에만, 사용자가 광고 동의를 수락한 경우에만, 그리고 추적이 무엇을 가능하게 하는지 설명하는 맞춤형 사전 프롬프트와 함께만 표시됩니다. JavaScript 브리지는 앱 시작 시 CMP의 동의 상태를 네이티브 셸에 노출하고 모든 동의 변경 시 이벤트를 발행합니다. 네이티브 셸의 SDK는 CMP 광고 동의와 ATT 인증 상태 모두에 의해 게이트됩니다. 둘 중 하나가 요청을 거부하면 SDK를 차단하기에 충분합니다.

사전 프롬프트와 Apple 가이드라인

Apple은 ATT 시스템 프롬프트 전에 퍼블리셔 목소리로 앱이 추적을 원하는 이유와 사용자가 그 대가로 무엇을 얻는지 설명하는 사전 프롬프트를 허용하며 — 실제로 기대합니다. 잘 작성된 사전 프롬프트는 옵트인 비율을 상당히 높일 수 있습니다. Apple이 허용하지 않는 것은 시스템 프롬프트를 우회하려는 사전 프롬프트, 거부의 결과를 잘못 나타내는 사전 프롬프트, 또는 앱 기능을 추적 인증에 조건부로 만드는 사전 프롬프트입니다. 검토자들은 세 가지 패턴 모두에 대해 앱을 거부하며, 조작적인 문구로 옵트인을 유도하기 위해 사전 프롬프트를 사용하는 것에 대해서도 점점 더 많이 거부하고 있습니다.

서버 측과 SKAdNetwork를 대안으로

ATT가 거부되거나 웹 뷰에서 광고 동의가 거부된 경우, 퍼블리셔는 어트리뷰션을 위해 SKAdNetwork로 폴백할 수 있습니다 — 개별 사용자 식별자를 노출하지 않고 전환 데이터를 제공하는 Apple의 프라이버시 보호 네트워크입니다. SKAdNetwork는 ATT의 적용을 받지 않으며 사용자의 동의 결정에 관계없이 작동하므로, 개인화된 경로가 닫혀 있을 때 측정을 위한 올바른 기본값이 됩니다. 네이티브 셸에서 퍼블리셔 소유 ID 서비스로의 서버 간 포스트백도 측정 격차를 메울 수 있습니다. 단, 데이터가 진정한 자사 데이터이고 Apple의 추적 정의로 다시 끌어들이는 방식으로 다른 사업자의 데이터와 결합되지 않는 경우에 한합니다.

거부 또는 감사를 유발하는 일반적인 실수

제거되거나 벌금을 받는 하이브리드 앱들은 같은 몇 가지 방식으로 실패하는 경향이 있습니다. WKWebView 내의 CMP 배너가 ATT 프롬프트가 해결되기 전에 실행되어, Apple의 권한이 아직 보류 중인 동안 기기에 쿠키를 설치합니다 — 이는 App Store 거부로 이어질 수 있는 발견 사항입니다. ATT 프롬프트가 사전 프롬프트 없이 콜드 스타트 시 표시되어, 낮은 옵트인 비율과 이탈을 증가시키는 혼란스러운 사용자 경험을 만들어냅니다. 네이티브 셸의 분석 SDK가 CMP가 첫 번째 동의 이벤트를 발행하기 전에 IDFA를 읽어, 명확한 적법한 근거 없이 개인 데이터를 네트워크에 올립니다. 웹 뷰의 동의 상태와 네이티브 셸의 인증 상태가 동기화 없이 별도의 저장소에 유지되어, 웹 뷰에서 광고를 거부했지만 네이티브 광고 SDK는 여전히 실행 중인 사용자를 만들어냅니다. 이들 각각은 1~2일간의 엔지니어링 작업과 회귀 테스트 통과로 수정할 수 있는 사항입니다 — 하지만 각각은 또한 감사관이나 검토자가 가장 먼저 확인하는 정확한 패턴이기도 합니다.

결론

ATT와 쿠키 동의는 중복된 레이어가 아닙니다. ATT는 특정 iOS API에 범위가 한정된 권한 게이트이고, 쿠키 동의는 WKWebView를 포함한 모든 브라우저 클래스 환경에서 데이터를 처리하기 위한 적법한 근거입니다. 하이브리드 앱은 두 가지 모두를 필요로 하며, 사용자가 두 개의 모순된 프롬프트 대신 하나의 일관된 결정을 보도록, 그리고 네이티브 셸과 웹 뷰가 동일한 답을 존중하도록 연결되어야 합니다. 이를 올바르게 하는 퍼블리셔들은 검토를 통과하고, 안정적으로 수익을 창출하며, 규제 기관의 집행 요약에 절대 등장하지 않는 앱을 출시합니다. ATT를 전체 답으로 취급하거나 웹 뷰 동의와 네이티브 셸이 분리되도록 내버려두는 퍼블리셔들은 2026년을 App Store 검토 회의와 감사 응답 서한을 번갈아가며 보내게 됩니다. 브리지를 한 번 구축하고, CMP를 진실의 원천으로 취급하며, ATT가 이미 웹 레이어에서 일관성 있는 프라이버시 입장 위에 있는 iOS 특화 잠금 장치 역할을 하도록 하세요.

← 블로그 전체 읽기 →