IDFA(Identifier for Advertisers)는 광고 목적 및 설치 기여 분석을 위해 설계된 iOS의 고유 장치 식별자입니다. iOS 14.5에서 App Tracking Transparency(ATT)가 도입되면서 IDFA를 얻으려면 시스템 대화 상자를 통해 사용자의 명시적 동의가 필요합니다. Apple App Tracking Transparency Documentation, 2025에 따르면, ATT 권한 없이 앱은 0으로 설정된 식별자를 받습니다. App Tracking Transparency는 모바일 광고 생태계를 근본적으로 변화시켰으며, 도입 후 IDFA 가용성을 80% 감소시켰습니다.
핵심 포인트
IDFA(Identifier for Advertisers)는 광고 목적으로 각 Apple 장치에 할당되는 고유한 영숫자 식별자입니다. IDFV(Identifier for Vendor)와 달리 IDFA는 장치의 모든 앱에서 동일하며 사용자는 언제든지 설정 — 개인정보 보호 — 광고 — 식별자 재설정을 통해 재설정할 수 있습니다.
IDFA의 주요 목적은 Apple 장치에서 설치 기여 분석 및 광고 캠페인의 효과를 추적하는 것입니다. 광고 네트워크는 IDFA를 사용하여 광고 클릭을 앱 설치에 연결하고, 사용자 프로필을 구축하며, 개인 맞춤형 광고를 표시합니다. ATT 도입 이후 다양한 분석 플랫폼에 따르면 IDFA에 대한 액세스를 허용하는 사용자의 비율은 평균 20-35%입니다.
Flurry Analytics(2025)에 따르면, iOS 18 이후 ATT 채택률은 활성 장치의 92%에 도달했지만 추적에 동의하는 사용자 비율은 22%로 떨어졌습니다. 이로 인해 모바일 광고 업계에 근본적인 변화가 일어나 광고 네트워크가 대체 기여 분석 방법을 모색하게 되었습니다.
IDFA의 주요 특징은 사용자의 개인 데이터를 포함하지 않으며 Apple ID에 연결되지 않는다는 점입니다. 그러나 Apple은 이를 App Tracking Transparency 규제 대상 식별자로 분류합니다.
App Tracking Transparency(ATT)는 iOS 14.5에서 도입된 Apple 프레임워크로, IDFA를 읽기 전에 사용자의 명시적 동의가 필요합니다. 동의가 없으면 asIdentifierManager 메서드가 0으로 설정된 식별자(00000000-0000-0000-0000-000000000000)를 반환하며 앱은 사용자를 추적할 수 없습니다.
ATT는 단일 공개 메서드 requestTrackingAuthorization(completionHandler:)을 가진 ATTrackingManager 클래스를 통해 구현됩니다. 이 메서드가 호출되면 시스템은 Info.plist의 NSUserTrackingUsageDescription 키를 통해 개발자가 설정한 텍스트가 포함된 네이티브 대화 상자를 표시합니다. 사용자는 “추적 허용”, “앱에 추적하지 않도록 요청” 또는 “거부” 중 하나를 선택할 수 있습니다.
승인 상태는 ATTrackingManager.trackingAuthorizationStatus를 통해 추적되며, notDetermined, restricted, denied 또는 authorized의 네 가지 값을 가질 수 있습니다. ATT를 요청하기 전에 현재 상태를 확인하고 상태가 이미 결정된 경우 대화 상자를 호출하지 않는 것이 좋습니다 — iOS 17부터 denied 상태로 requestTrackingAuthorization을 다시 호출하면 대화 상자가 표시되지 않고 오류가 반환됩니다.
ATT 요청의 시기는 동의율에 중요한 영향을 미칩니다. Singular(2025)의 연구에 따르면 온보딩 화면(첫 실행 시)에서 ATT를 요청하면 35-45%의 전환율을 보이는 반면, 작업 완료 후(예: 등록 후) 요청하면 전환율이 55-65%로 증가합니다. 시스템 ATT 대화 상자 전에 맞춤 디자인의 사전 권한 화면을 표시하여 사용자에게 추적의 가치를 설명하는 것이 좋습니다.
중요: 앱은 응답을 받기 전에 requestTrackingAuthorization을 한 번만 호출할 수 있습니다. 사용자가 “거부” 또는 “앱에 추적하지 않도록 요청”을 선택하면 해당 장치에서 대화 상자가 더 이상 표시되지 않습니다. 개발자는 제한된 추적 조건에서도 앱이 계속 올바르게 작동하도록 IDFA 없이 작업하기 위한 폴백 메커니즘을 구현해야 합니다.
iOS 18 출시와 함께 Apple은 광고 식별자를 사용하는 앱에 대한 요구 사항을 강화했습니다. IDFA를 요청하거나 광고 목적으로 장치 데이터를 전송하는 모든 앱은 새로운 App Store 규칙을 준수해야 합니다. 준수하지 않으면 App Store Connect 검토 중 빌드가 거부됩니다.
iOS 18부터 모든 앱은 추적에 사용되는 모든 API를 선언하는 Privacy Manifest(privacy.xcprivacy 파일)를 포함해야 합니다. IDFA의 경우 NSPrivacyTracking 및 NSPrivacyTrackingDomains 키가 사용되어 식별자가 전송되는 광고 네트워크 도메인을 지정합니다. 올바른 매니페스트가 없으면 App Store Connect 심사 중에 앱이 거부됩니다.
Apple은 또한 앱 설명에 광고 식별자 사용 이유를 명시하도록 요구했습니다. 앱이 설치 기여 분석에 IDFA를 사용하는 경우 SKAdNetwork를 기본 방법으로 사용하고 IDFA는 기여 분석 정확도를 높이기 위한 추가 신호로만 사용해야 합니다.
IDFA에 대한 제한이 증가함에 따라 업계는 여러 대체 접근 방식을 개발했습니다. SKAdNetwork(StoreKit Ad Network)는 IDFA 없이 작동하며 사용자 동의가 필요 없는 Apple의 공식 기여 분석 메커니즘입니다. SKAdNetwork는 광고 네트워크와 App Store 간에 서명된 포스트백 요청을 사용하여 사용자 개인정보를 보장합니다.
다른 대안으로는 IP 주소, OS 버전 및 기타 장치 신호 기반의 확률적 기여 분석, WebKit의 Private Click Measurement(PCM)와 같은 비공개 집계 API, 기계 학습을 사용하여 전환을 예측하는 독점 광고 플랫폼 솔루션이 있습니다. 중국 시장의 경우 모바일 통신사 네트워크 데이터를 기반으로 하는 CAID(Cellular Advertising ID)도 사용됩니다.
IDFA 요청을 구현하려면 App Tracking Transparency를 통합하고 가능한 모든 승인 상태를 올바르게 처리해야 합니다. 다음은 사전 권한 화면이 포함된 Swift의 완전한 예제입니다.
예제는 IDFA를 사용한 전체 워크플로를 보여줍니다: 상태 확인, 사전 권한 화면 표시, ATT 시스템 대화 상자 호출 및 승인 후 식별자 획득.
import AppTrackingTransparency
import AdSupport
func requestIDFAAccess() {
let status = ATTrackingManager.trackingAuthorizationStatus
switch status {
case .notDetermined:
// 설명과 함께 사전 권한 화면 표시
showPrePermissionScreen { accepted in
guard accepted else { return }
ATTrackingManager.requestTrackingAuthorization { newStatus in
handleATTStatus(newStatus)
}
}
case .authorized:
// 사용자가 이미 동의함 — IDFA 획득 중
let idfa = ASIdentifierManager.shared().advertisingIdentifier
print("IDFA: \(idfa.uuidString)")
case .denied, .restricted:
// 사용자를 설정으로 리디렉션
redirectToSettings()
@unknown default:
break
}
}
private func handleATTStatus(status: ATTrackingManager.AuthorizationStatus) {
if status == .authorized {
let idfa = ASIdentifierManager.shared().advertisingIdentifier
// IDFA를 광고 네트워크에 전송
sendIDFAToAdNetwork(idfa.uuidString)
}
}
대부분의 사용자가 ATT 요청을 거부하므로 개발자는 식별자 없이 효과적으로 작업하기 위한 전략 세트가 필요합니다. 주요 접근 방식은 SKAdNetwork와 확률적 기여 분석 방법의 조합입니다.
SKAdNetwork(SKAN)는 IDFA가 필요하지 않으며 동의 대화 상자를 표시하지 않는 설치 기여 분석을 위한 Apple 프레임워크입니다. 광고 네트워크는 앱의 Info.plist에 SKAdNetwork ID를 등록하고, 설치 후 App Store가 캠페인 정보가 포함된 서명된 포스트백을 보냅니다. iOS 17에서 도입된 SKAN 4.0은 여러 전환, 소스 식별자 및 대략적인 전환 값을 지원합니다.
SKAN 제한 사항: 24~48시간의 포스트백 지연, 사용자 식별자 없음, 제한된 전환 값(최대 64). 그럼에도 불구하고 SKAN은 ATT 도입 이후 iOS 기여 분석의 사실상 표준이 되었으며, 모든 주요 광고 네트워크는 Apple 장치에서 작동하기 위해 이를 지원해야 합니다.
Meta 및 Google과 같은 광고 네트워크는 사용자 식별자 없이 전환을 예측하는 자체 기계 학습 기반 솔루션을 개발했습니다. Meta Aggregated Events Measurement(AEM)는 집계된 데이터를 기여 분석에 사용하고, Google Attribution은 기록 데이터를 기반으로 전환을 모델링합니다.
개발자에게는 SKAdNetwork를 기본 방법으로, 광고 네트워크를 통한 서버 측 기여 분석, 전환 모델링을 사용한 독점 분석 도구 등 여러 기여 분석 방법을 동시에 구현하는 것이 중요합니다. 방법을 조합하면 IDFA 시대와 비교하여 최대 70-80%의 기여 분석 정확도를 복구할 수 있습니다. 베타 테스트 단계에서 다양한 방법 조합을 테스트하여 특정 앱과 대상 사용자에게 최적의 세트를 선택하는 것이 좋습니다.
자주 묻는 질문
IDFA는 광고 네트워크가 개인 맞춤형 광고를 표시하고 캠페인 효과를 측정하는 데 사용하는 iPhone 또는 iPad 장치의 고유 코드입니다. iOS 14.5부터 앱은 App Tracking Transparency 시스템 대화 상자를 통해 IDFA에 액세스하기 전에 사용자의 허가를 받아야 합니다.
IDFV(Identifier for Vendor)는 장치에서 동일한 개발자의 모든 앱에 고유한 식별자입니다. IDFA와 달리 IDFV는 ATT 동의가 필요 없으며 항상 사용 가능합니다. IDFA는 모든 앱에서 동일하지만 IDFV는 한 공급업체의 앱에만 특정합니다(bundle ID 기준).
사용자 동의 없이 IDFA를 얻는 것은 불가능합니다. iOS 14.5부터 사용자가 ATT를 통해 동의하지 않은 경우 ASIdentifierManager.advertisingIdentifier는 0으로 설정된 식별자(00000000-0000-0000-0000-000000000000)를 반환합니다. 유일한 합법적인 방법은 ATTrackingManager.requestTrackingAuthorization을 호출하고 authorized 상태를 얻는 것입니다.
NSUserTrackingUsageDescription은 ATT 시스템 대화 상자에 표시되는 텍스트가 포함된 앱 Info.plist의 키입니다. 텍스트는 앱이 추적을 필요로 하는 이유를 사용자에게 설명해야 합니다. 예: “사용자의 IDFA는 개인 맞춤형 광고를 표시하고 캠페인 효과를 측정하는 데 사용됩니다.”
아니요, IDFA는 Apple 생태계의 독점 식별자입니다. Android는 GAID(Google Advertising ID) 또는 AAID(Android Advertising ID)를 사용합니다. 둘 다 유사한 기능을 수행하지만 다른 규칙의 적용을 받습니다 — Android에서는 사용자가 Google 설정에서 식별자를 재설정하거나 광고 개인화를 비활성화할 수 있습니다.
요약
턴키 방식의 모바일 애플리케이션을 개발해 드립니다
IT Sectr는 2017년부터 스타트업과 기업을 위한 iOS 및 Android 애플리케이션을 만듭니다. 저희가 상담해 드리고 최적의 솔루션을 제안하겠습니다.