가이드 1 트래킹 기반 구축 · 가이드 1-4

iOS 프라이버시 대응 (ATT & SKAN)

ATT 프롬프트 허용률을 끌어올리고, SKAdNetwork 4.0 Conversion Value 스키마를 비즈니스 KPI에 맞춰 설계한다. ATT 허용률 0.1pp 차이가 iOS CPI 5~10% 영향으로 직결된다.

담당 · Growth + Product SKAN 4.0 대응 iOS 14.5+ 필수
핵심 요약

ATT(App Tracking Transparency)는 IDFA 사용 동의를 묻는 시스템 프롬프트이며, 미허용 시 어트리뷰션이 SKAdNetwork(SKAN) 단일 채널로 강제 다운그레이드된다. SKAN 4.0은 3개 시점(0~2일/3~7일/8~35일)에 Coarse(low/medium/high) + Fine(0~63) 값을 전송한다. 본 가이드는 (1) ATT 프롬프트 최적화, (2) SKAN CV 스키마 설계, (3) Adjust 매핑 셋업을 다룬다.

§1ATT 프롬프트 설계

업계 평균 ATT 허용률: 게임 ~28%, 커머스 ~35%, 핀테크 ~42% (2025 기준). 허용률 끌어올리는 3가지 레버:

  1. Pre-prompt(설명 다이얼로그) 삽입 — 시스템 프롬프트 호출 직전 자체 디자인 화면에서 "왜 동의가 필요한지"를 카피로 설명. 거부 의도가 있는 사용자는 Pre-prompt에서 걸러 시스템 프롬프트 거부율을 낮춤.
  2. 호출 시점 지연 — 첫 실행 즉시가 아니라 가치 인지 후(온보딩 완료 직후, 첫 구매 전, 푸시 동의 직후 등) 호출. 30~60초 지연 권장.
  3. NSUserTrackingUsageDescription 카피 — Info.plist의 ATT 설명 문구. "개인 맞춤 광고" 대신 "더 적합한 콘텐츠 추천" 등 사용자 효익 중심 카피.
Pre-prompt + ATT 호출 흐름
import AppTrackingTransparency
      import AdjustSdk

      func showATTFlow(from vc: UIViewController) {
          class="c">// 1. 가치 인지 시점 체크 (예: 온보딩 완료)
          guard OnboardingState.shared.isCompleted else { return }

          class="c">// 2. Pre-prompt 표시
          let pre = PrePromptViewController(
              title: "개인화된 콘텐츠 추천을 위한 동의",
              body: "다음 화면에서 '허용'을 선택하시면 더 관심에 맞는 콘텐츠를 추천드릴 수 있습니다.",
              primaryAction: "계속",
              secondaryAction: "지금은 건너뛰기"
          )
          pre.onPrimary = { requestSystemATT() }
          pre.onSecondary = { /* 7일 후 재시도 큐잉 */ }
          vc.present(pre, animated: true)
      }

      func requestSystemATT() {
          ATTrackingManager.requestTrackingAuthorization { status in
              class="c">// Adjust SDK는 결과를 자동 수신
              Analytics.track("att_response", [
                  "status": status.rawValue,
                  "is_authorized": status == .authorized
              ])
          }
      }
Info.plist · 권장 카피
{
        "NSUserTrackingUsageDescription": "더 관심에 맞는 콘텐츠와 혜택을 추천드리기 위해 활동 데이터를 사용합니다."
      }

§2SKAdNetwork 4.0 스키마

SKAN 4.0의 핵심 변경점:

  • 3-postback 윈도우: 설치 후 0~2일 / 3~7일 / 8~35일에 각각 1개씩 postback 발화
  • Coarse Conversion Value: low / medium / high 3단계 — 트래픽이 적은 캠페인도 신호 수집 가능
  • Fine Conversion Value: 0~63 (6bit) — 충분한 트래픽이 있는 캠페인만 허용
  • Hierarchical Source ID: 캠페인/광고그룹/소재 단위 시그널 가능 (이전 2-digit → 4-digit)

§3Conversion Value 매핑 (커머스 앱 예시)

매출 누적액 + 핵심 이벤트 발생 여부의 조합으로 64개 슬롯에 매핑한다. 0~2일차에 Fine 64단계, 3~7일차와 8~35일차에 Coarse 3단계만 활용 가능.

Fine CV조건Coarse비즈니스 의미
0install onlylow설치만
1session_start ≥ 2low재방문
5add_to_cart 1회low관여 시작
10add_to_cart ≥ 2 OR begin_checkoutmedium고관여
20purchase 1회 · revenue < $5medium저액 구매
30purchase 1회 · revenue $5~$20medium중간 구매
45purchase 1회 · revenue $20~$50high고액 구매
55purchase ≥ 2 OR revenue ≥ $50high충성 구매
63subscribe (월 구독)high구독 전환

§4Adjust SKAN 셋업

  1. Adjust 대시보드 → App Setup → SKAdNetwork → Enable SKAN 4.0
  2. Conversion Value Schema: Revenue + Events 조합 모드 선택
  3. 이벤트별 Coarse Tier 매핑 (위 표 §3 기준)
  4. 매체별 SKAN 채널 활성화: Meta/Google/TikTok/AppLovin 별도 토글
  5. Apple Console에서 Test Mode로 postback 발화 검증 (xcrun simctl)
SKAN CV 업데이트 (Adjust 위임)
class SKANDelegateHandler: NSObject, AdjustDelegate {
          static let shared = SKANDelegateHandler()

          func adjustConversionValueUpdated(_ conversionValue: NSNumber?) {
              class="c">// Adjust가 자동으로 conversion value 계산 후 호출
              guard let cv = conversionValue?.intValue else { return }
              Analytics.track("skan_cv_updated", [
                  "fine_value": cv,
                  "coarse_tier": cv < 10 ? "low" : cv < 45 ? "medium" : "high"
              ])
          }
      }

§5트러블슈팅

!
ATT 프롬프트가 표시되지 않는다

1) NSUserTrackingUsageDescription Info.plist 누락. 2) iOS 14.5 미만 디바이스. 3) 이미 응답한 사용자(설정 → 개인정보 보호 → 추적에서 초기화 후 재테스트). 4) Adjust SDK 초기화가 ATT 호출 이전에 완료되어야 함.

!
SKAN postback이 도달하지 않는다

1) Apple Console의 SKAdNetwork Identifier(.skadnetworkidentifier)가 Info.plist에 등록되었는지 확인 — 매체별 식별자가 모두 들어가야 함 (보통 30~50개). 2) Adjust는 자동으로 매체사 redirect를 처리하지만, 매체사가 SKAN 채널을 별도 활성화해야 함. 3) postback 지연 정상 범위: 0~24시간.

i
CV 분포가 한쪽으로 쏠림 (대부분 0)

CV 매핑이 너무 빡빡하게 설정된 경우. 매출 임계값을 낮추거나, 이벤트만으로도 CV가 올라가도록 mid-tier 슬롯을 확장. Apple Privacy Threshold(25 install/일) 미달 캠페인은 CV가 NULL로 마스킹되므로 작은 캠페인은 합쳐서 운영.