GDPR IAB 支援

根據 Google《歐盟地區使用者同意授權政策》,您必須向歐洲經濟區和英國境內的使用者揭露特定資訊,並在法律規定下,徵得使用者同意,才能使用 Cookie 或其他本機儲存空間,以及使用個人資料 (例如廣告 ID) 放送廣告。本政策是配合《歐盟地區電子通訊隱私指令》和《一般資料保護規則》(GDPR) 而制定。

本指南將說明如何透過 UMP SDK 支援 GDPR IAB 資訊公開和同意聲明架構第 2 版訊息。建議您搭配「開始使用」一文閱讀,瞭解如何使用 UMP SDK 執行應用程式,以及設定訊息的基本概念。以下指引適用於 GDPR IAB TCF 第 2 版訊息。詳情請參閱互動廣告協會規定對歐盟地區同意授權訊息的影響

必要條件

根據 GDPR 規定,您必須提供撤銷同意功能,讓使用者隨時撤銷同意聲明選擇。請參閱「隱私權選項」,瞭解如何讓使用者撤銷同意聲明。

如要指出使用者是否未滿法定同意年齡,請設定 setTagForUnderAgeOfConsent (TFUA)。將 TFUA 設為 true 時,UMP SDK 不會向使用者要求同意聲明。如果應用程式包含混合各年齡層的目標對象,請為兒童使用者設定這個參數,確保系統不會要求取得同意聲明。

以下範例會在 UMP 同意聲明要求中,將 TFUA 設為 true:

Java

ConsentRequestParameters params = new ConsentRequestParameters
    .Builder()
    // Indicate the user is under age of consent.
    .setTagForUnderAgeOfConsent(true)
    .build();

consentInformation = UserMessagingPlatform.getConsentInformation(this);
consentInformation.requestConsentInfoUpdate(
    this,
    params,
    (OnConsentInfoUpdateSuccessListener) () -> {
      // ...
    },
    (OnConsentInfoUpdateFailureListener) requestConsentError -> {
      // ...
    });

Kotlin

val params = ConsentRequestParameters
    .Builder()
    // Indicate the user is under age of consent.
    .setTagForUnderAgeOfConsent(true)
    .build()

consentInformation = UserMessagingPlatform.getConsentInformation(this)
consentInformation.requestConsentInfoUpdate(
    this,
    params,
    ConsentInformation.OnConsentInfoUpdateSuccessListener {
      // ...
    },
    ConsentInformation.OnConsentInfoUpdateFailureListener {
      requestConsentError ->
      // ...
    })

中介服務

請按照「將廣告合作夥伴加入已發布的 GDPR 訊息」一文中的步驟,將中介服務合作夥伴加入廣告合作夥伴名單。否則合作夥伴可能無法在您的應用程式中放送廣告。

中介服務合作夥伴也可能提供其他工具,協助您遵守 GDPR。詳情請參閱特定合作夥伴的整合指南

收集 GDPR 同意聲明後,您可以按照 TCF 第 2 版規格,從本機儲存空間讀取同意聲明選項。IABTCF_PurposeConsents 鍵會指出各項 TCF 目的的同意聲明。

下列程式碼片段說明如何檢查用途 1 的同意聲明:

Java

SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(context);
// Example value: "1111111111"
String purposeConsents = sharedPref.getString("IABTCF_PurposeConsents", "");
// Purposes are zero-indexed. Index 0 contains information about Purpose 1.
if (!purposeConsents.isEmpty()) {
  String purposeOneString = purposeConsents.charAt(0).toString();
  boolean hasConsentForPurposeOne = purposeOneString.equals("1");
}

Kotlin

val sharedPref = PreferenceManager.getDefaultSharedPreferences(context)
// Example value: "1111111111"
val purposeConsents = sharedPref.getString("IABTCF_PurposeConsents", "")
// Purposes are zero-indexed. Index 0 contains information about Purpose 1.
if (purposeConsents?.isEmpty() == false) {
  val purposeOneString = purposeConsents.first().toString()
  val hasConsentForPurposeOne = purposeOneString == "1"
}

常見問題

如果我未採取任何行動,以符合「在歐洲經濟區和英國放送廣告的同意聲明管理平台規定」,會發生什麼情況?

自 2024 年 1 月 16 日起,如果合作夥伴未採用 Google 認證的 CMP, 在歐洲經濟區和英國境內流量,只能放送受限制的廣告

自 2024 年 1 月 16 日起,Google 將開始對一小部分的歐洲經濟區和英國流量實施這項要求,並在 2024 年 2 月底前逐步擴大實施,涵蓋這兩個地區的所有流量。請在 2024 年 1 月 16 日前採用經認證的 CMP,確保營利不受影響。

如何確認使用者是否已同意?

同意聲明並非以單一位元表示,而是以 IAB 資訊公開和同意聲明架構規格中定義的一組用途和供應商表示。如需 Google Ads 個人化條件,請參閱「同意聲明政策:個人化和非個人化廣告」。

此外,如果 Google 廣告技術供應商 (ATP) 名單上的廣告技術未註冊於資訊公開和同意聲明架構供應商清單,就會使用 Google 的額外同意聲明技術規格收集同意聲明。Google 會在下列位置發布未註冊 IAB 的廣告技術供應商清單及其 ID: https://storage.googleapis.com/tcfac/additional-consent-providers.csv

如要偵錯個別廣告請求,請使用廣告檢查器的「偵錯隱私權設定」功能,查看廣告請求中傳遞的下列隱私權信號,這些信號是發布商與 IAB Europe TCF 整合的一部分:

廣告檢查器標籤 廣告請求查詢參數 意義
適用 GDPR (IABTCF_gdprApplies) gdpr 這個廣告請求是否適用 GDPR。
資訊公開和同意聲明 (TC) 字串 (IABTCF_TCString) gdpr_consent 資訊公開和同意聲明字串。IAB 提供網頁工具,可供您手動解碼值。
額外同意聲明字串 (IABTCF_AddtlConsent) addtl_consent Google 額外同意聲明技術規格中的 AC 字串。

如要以程式輔助方式讀取同意聲明選項,請參閱「如何讀取同意聲明選項」一文。

我是否需要使用 Google 的 UMP SDK,才能符合 CMP 規定?

可以,您可以使用這份清單中的任何 Google 認證 CMP 放送廣告。

即使使用者已同意,如何使用 UMP SDK 再次顯示同意聲明表單?

如果使用者已做出同意聲明決定,Google 的同意聲明管理解決方案就不會要求收集新的同意聲明,直到資訊公開和同意聲明 (TC) 字串過期或失效為止。

根據 GDPR,您必須修改同意聲明,讓使用者隨時撤銷同意聲明選項。請參閱隱私權選項,瞭解如何實作讓使用者撤銷同意聲明選擇的方法。如要再次顯示同意聲明表單,請呼叫 showPrivacyOptionsForm()

我已整合 Google 認證的 CMP,但即使使用者已同意,系統也不會向中介服務合作夥伴發出任何廣告請求。為何有這項異動?

根據資訊公開和同意聲明架構,Google 會先確認廣告技術供應商和其他程式輔助廣告需求來源遵守 Google 政策,且基於至少一項法律依據合法處理資料,再將這些供應商和廣告需求加入中介服務刊登序列。詳情請參閱中介服務一節。

Google 廣告技術供應商 (ATP) 名單中的部分中介服務合作夥伴,並未註冊 TCF 供應商名單。這些合作夥伴會改用 Google 的額外同意聲明技術規格收集同意聲明。Google 會在下列位置發布未註冊 IAB 的廣告技術供應商清單及其 ID: https://storage.googleapis.com/tcfac/additional-consent-providers.csv

UMP SDK 支援儲存 ACString,因此您將廣告合作夥伴加入已發布的 GDPR 訊息時,不必瞭解合作夥伴是否已註冊 TCF。使用第三方 CMP 時,請採取下列做法:

  1. 確認第三方 CMP 支援儲存 ACString。
  2. 在第三方 CMP 用於收集同意聲明的廣告技術供應商清單中,加入每個中介服務合作夥伴。
如果使用者不同意,我可以變更應用程式的運作方式嗎?這種做法是否符合政策規定?

發布商可以在應用程式中讀取 IAB TCF 字串。如要瞭解如何以程式輔助方式讀取同意聲明選項,請參閱「如何讀取同意聲明選項」。發布商應與法律顧問一同審查相關法規規定的義務。

選取「管理選項」並同意所有用途後,為何沒有看到任何廣告?為何有這項異動?

除了收集用途同意聲明外,您也需要收集供應商同意聲明。任何供應商 (例如 Google) 都必須取得目的和供應商同意聲明,才能放送合適的廣告。

對於已同意第 1 版的使用者,如何導入額外同意聲明字串第 2 版?

根據 Google 的額外同意聲明技術規格,檢查本機儲存空間中的 IABTCF_AddtlConsent 鍵,判斷使用者是否已同意額外同意聲明字串第 2 版,以及是否需要再次顯示同意聲明表單。

Java

SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(context);
// Example value: "2~1.35.41.101~dv.9.21.81"
String additionalConsent = sharedPref.getString("IABTCF_AddtlConsent", "");
// Index 0 contains information about the specification version number.
if (!additionalConsent.isEmpty()) {
  String specACVersion = additionalConsent.charAt(0);
  boolean isACVersion2 = purposeOneString.equals("2");
}

Kotlin

val sharedPref = PreferenceManager.getDefaultSharedPreferences(context)
// Example value: "2~1.35.41.101~dv.9.21.81"
val additionalConsent = sharedPref.getString("IABTCF_AddtlConsent", "")
// Index 0 contains information about the specification version number.
if (!additionalConsent.isEmpty()) {
  val specACVersion = additionalConsent.first()
  val isACVersion2 = specACVersion == "2"
}