GDPR IAB 지원

Google EU 사용자 동의 정책에 따라 유럽 경제 지역 (EEA) 및 영국에서 사용자에게 특정 정보를 공개해야 하며, 법적으로 필요한 경우 쿠키 또는 기타 로컬 저장소를 사용하고 개인 정보 (예: 광고 ID)를 사용하여 광고를 게재한다는 점에 대해 EEA 사용자의 동의를 받아야 합니다. 이 정책에는 EU 온라인 개인 정보 보호 지침 및 개인 정보 보호법 (GDPR)의 요구사항이 반영되어 있습니다.

이 가이드에서는 UMP SDK의 일환으로 GDPR IAB TCF v2 메시지를 지원하는 데 필요한 단계를 설명합니다. 이 가이드는 UMP SDK를 사용하여 앱을 실행하는 방법에 대한 개요와 메시지를 설정하는 방법에 대한 기본사항을 제공하는 시작하기와 연계할 수 있도록 작성되었습니다. 다음 안내는 GDPR IAB TCF v2 메시지 전용입니다. 자세한 내용은 IAB 요구사항이 EU 동의 메시지에 미치는 영향을 참고하세요.

기본 요건

GDPR에서는 사용자가 언제든지 동의 선택을 철회할 수 있도록 동의 철회를 요구합니다. 사용자가 동의 선택을 철회할 수 있는 방법을 구현하려면 개인 정보 보호 옵션을 참고하세요.

사용자가 동의 연령 미만인지 여부를 나타내려면 tagForUnderAgeOfConsent (TFUA)를 설정합니다. TFUA를 true로 설정하면 UMP SDK는 사용자의 동의를 요청하지 않습니다. 앱 사용자의 연령대가 다양하면 아동 사용자에게 이 매개변수를 설정하여 동의를 요청하지 않도록 합니다.

다음 예에서는 UMP 동의 요청에서 TFUA를 true로 설정합니다.

Swift

// Create a UMPRequestParameters object.
let parameters = UMPRequestParameters()
// Indicate the user is under age of consent.
parameters.tagForUnderAgeOfConsent = true

// Request an update for the consent information.
UMPConsentInformation.sharedInstance.requestConsentInfoUpdate(with: parameters) {
  [weak self] requestConsentError in
  guard let self else { return }

  // ...
}

Objective-C

// Create a UMPRequestParameters object.
UMPRequestParameters *parameters = [[UMPRequestParameters alloc] init];
// Indicate the user is under age of consent.
parameters.tagForUnderAgeOfConsent = YES;

// Request an update for the consent information.
[UMPConsentInformation.sharedInstance
    requestConsentInfoUpdateWithParameters:parameters
        completionHandler:^(NSError *_Nullable requestConsentError) {
          // ...
        }];

미디에이션

게시된 GDPR 메시지에 광고 파트너 추가의 단계에 따라 미디에이션 파트너를 광고 파트너 목록에 추가하세요. 이렇게 하지 않으면 파트너가 앱에 광고를 게재하지 못할 수 있습니다.

미디에이션 파트너에게는 GDPR 규정 준수에 도움이 되는 추가 도구가 있을 수도 있습니다. 자세한 내용은 특정 파트너의 통합 가이드를 참고하세요.

GDPR 동의가 수집된 후 TCF v2 사양에 따라 로컬 저장소에서 동의 선택을 읽을 수 있습니다. IABTCF_PurposeConsents 키는 각 TCF 목적에 대한 동의를 나타냅니다.

다음 코드 스니펫은 목적 1에 대한 동의를 확인하는 방법을 보여줍니다.

Swift

// Example value: "1111111111"
let purposeConsents = UserDefaults.standard.string(forKey: "IABTCF_PurposeConsents")
// Purposes are zero-indexed. Index 0 contains information about Purpose 1.
let hasConsentForPurposeOne = purposeConsents?.first == "1"

Objective-C

// Example value: "1111111111"
NSString *purposeConsents = [NSUserDefaults.standardUserDefaults
                             stringForKey:@"IABTCF_PurposeConsents"];
// Purposes are zero-indexed. Index 0 contains information about Purpose 1.
BOOL hasConsentForPurposeOne = [purposeConsents hasPrefix:@"1"];

자주 묻는 질문(FAQ)

EEA 및 영국에서 광고를 게재할 때 적용되는 동의 관리 플랫폼 요구사항을 충족하기 위해 조치를 취하지 않으면 어떻게 되나요?

2024년 1월 16일부터 파트너가 Google 인증 CMP를 채택하지 않으면 EEA 및 영국 트래픽에 제한적인 광고만 게재할 수 있습니다.

2024년 1월 16일부터 소수의 EEA 및 영국 트래픽을 대상으로 요건이 시행되기 시작하여 2024년 2월 말까지는 모든 EEA 및 영국 트래픽에 확대 적용될 예정입니다. 수익 창출에 영향을 받지 않도록 2024년 1월 16일까지 인증 CMP를 도입하시기 바랍니다.

사용자가 동의했는지 어떻게 확인할 수 있나요?

동의는 단일 비트로 표시되지 않고 IAB TCF 사양에 정의된 대로 목적 및 공급업체 집합으로 표시됩니다. Google Ads 개인 최적화 기준에 관한 자세한 내용은 동의 정책: 개인 맞춤 광고 및 개인 맞춤이 아닌 광고를 참고하세요.

또한 TCF 공급업체 목록에 등록되지 않은 Google의 광고 기술 제공업체(ATP) 목록에 있는 광고 기술은 동의 수집 시 Google의 추가 동의 기술 사양을 사용합니다. Google은 IAB에 등록되지 않은 광고 기술 제공업체 및 해당 ID를 다음 위치에 게시합니다.https://storage.googleapis.com/tcfac/additional-consent-providers.csv

개별 광고 요청을 디버그하려면 광고 검사기의 개인 정보 보호 설정 디버그 기능을 사용하여 게시자와 IAB 유럽 TCF 통합의 일환으로 광고 요청에 전달된 다음 개인 정보 보호 신호를 확인하세요.

광고 검사기 라벨 광고 요청 쿼리 매개변수 의미
GDPR 적용됨 (IABTCF_gdprApplies) gdpr 이 광고 요청에 GDPR이 적용되는지 여부입니다.
TC 문자열 (IABTCF_TCString) gdpr_consent TC 문자열 IAB에서는 값을 수동으로 디코딩할 수 있는 웹 도구를 제공합니다.
AC 문자열 (IABTCF_AddtlConsent) addtl_consent Google의 추가 동의 기술 사양의 AC 문자열입니다.

동의 선택사항을 프로그래매틱 방식으로 읽으려면 동의 선택사항을 읽는 방법을 참고하세요.

CMP 요구사항을 충족하기 위해 Google의 UMP SDK를 사용해야 하나요?

아니요. Google 인증 CMP 목록에 있는 모든 CMP를 사용하여 광고를 게재할 수 있습니다.

사용자가 이미 동의한 경우에도 UMP SDK를 사용하여 동의 양식을 다시 표시하려면 어떻게 해야 하나요?

사용자가 이미 동의 여부를 결정한 경우 Google의 동의 관리 솔루션은 TC 문자열이 만료되거나 무효화될 때까지 새 동의를 수집하도록 요청하지 않습니다.

GDPR에 따라 사용자가 언제든지 동의 선택사항을 철회할 수 있도록 동의 수정이 필요합니다. 사용자가 동의 선택을 철회할 수 있는 방법을 구현하려면 개인 정보 보호 옵션을 참고하세요. 동의 양식을 다시 표시하려면 presentPrivacyOptionsFormFromViewController:completionHandler:를 호출합니다.

Google 인증 CMP를 통합했지만 동의한 사용자의 경우에도 미디에이션 파트너에 대한 광고 요청이 표시되지 않습니다. 이유가 무엇인가요?

TCF에 따라 Google에서는 광고 기술 제공업체 및 기타 프로그래매틱 수요 소스가 Google 정책을 위반하지 않으며 연쇄 광고 호출 조정에 포함되기 전에 데이터를 처리하기 위한 법적 근거가 하나 이상 있는지 확인합니다. 자세한 내용은 미디에이션 섹션을 참고하세요.

Google 광고 기술 제공업체 (ATP) 목록에 있는 일부 미디에이션 파트너는 TCF 공급업체 목록에 등록되어 있지 않습니다. 이러한 파트너는 동의 수집 시 Google의 추가 동의 기술 사양을 대신 사용합니다. Google은 IAB에 등록되지 않은 광고 기술 제공업체 및 해당 ID를 다음 위치에 게시합니다. https://storage.googleapis.com/tcfac/additional-consent-providers.csv

UMP SDK는 ACString 저장을 지원하므로 파트너가 TCF에 등록되어 있는지 확인하지 않고도 게시된 GDPR 메시지에 광고 파트너를 추가할 수 있습니다. 서드 파티 CMP를 사용할 때는 다음을 실행해야 합니다.

  1. 서드 파티 CMP가 ACString 저장을 지원하는지 확인합니다.
  2. 서드 파티 CMP에서 동의를 수집하는 데 사용하는 광고 기술 제공업체 목록에 각 미디에이션 파트너를 포함합니다.
사용자가 동의하지 않는 경우 앱의 작동 방식을 변경할 수 있나요? 정책에 의해 허용되나요?

게시자는 앱에서 IAB TCF 문자열을 읽을 수 있습니다. 동의 선택사항을 프로그래매틱 방식으로 읽는 방법에 관한 자세한 내용은 동의 선택사항을 읽는 방법을 참고하세요. 게시자는 관련 규정에 따른 의무를 법률 전문가와 함께 검토해야 합니다.

옵션 관리를 선택하고 모든 목적에 동의했는데 광고가 표시되지 않습니다. 이유가 무엇인가요?

목적 동의 외에도 공급업체 동의도 수집해야 합니다. Google과 같은 공급업체가 적절한 광고를 게재하려면 목적 동의와 공급업체 동의가 모두 필요합니다.

동일한 사용자에게 iOS ATT 알림과 GDPR 동의를 모두 표시하는 권장사항은 무엇인가요?

사용자가 GDPR에 동의한 경우 GDPR 동의 메시지를 먼저 표시하고 iOS ATT 알림을 나중에 표시하는 것이 좋습니다. AdMob UI에서 두 메시지를 모두 구성하는 경우 이 작업은 이미 UMP SDK에서 처리합니다. 자세한 내용은 사용자에게 표시되는 메시지를 참고하세요.

UMP SDK를 사용하여 ATT 알림을 표시하지 않는 경우 GDPR 동의를 수집한 후 동의 선택사항을 읽고 iOS ATT 알림을 표시할지 결정하는 것이 좋습니다.

이미 버전 1에 동의한 사용자에게 AC 문자열 버전 2를 구현하려면 어떻게 해야 하나요?

Google의 추가 동의 기술 사양에 따라 로컬 저장소의 IABTCF_AddtlConsent 키를 확인하여 사용자가 AC 문자열 버전 2에 동의했는지, 동의 양식을 다시 표시해야 하는지 확인합니다.

Swift

// Example value: "2~1.35.41.101~dv.9.21.81"
let additionalConsent = UserDefaults.standard.string(forKey: "IABTCF_AddtlConsent")
// Index 0 contains information about the specification version number.
let isACVersion2 = additionalConsent?.first == "2"

Objective-C

// Example value: "2~1.35.41.101~dv.9.21.81"
NSString *additionalConsent = [NSUserDefaults.standardUserDefaults
                        stringForKey:@"IABTCF_AddtlConsent"];
// Index 0 contains information about the specification version number.
BOOL isACVersion2 = [additionalConsent hasPrefix:@"2"];