เปิดเผยต่อผู้ใช้ใน EEA

เลือกแพลตฟอร์ม: Android iOS Unity Flutter Android (เดิม)

ภายใต้นโยบายความยินยอมของผู้ใช้ EU ของ Google คุณต้องเปิดเผยข้อมูลบางอย่างต่อผู้ใช้ในเขตเศรษฐกิจยุโรป (EEA) สหราชอาณาจักร (UK) และสวิตเซอร์แลนด์ และได้รับความยินยอมจากผู้ใช้ในการใช้คุกกี้หรือพื้นที่เก็บข้อมูลอื่นในเครื่องในกรณีที่กฎหมายกำหนด รวมถึงการใช้ข้อมูลส่วนตัว (เช่น AdID) เพื่อแสดงโฆษณา

นโยบายนี้เป็นผลมาจากข้อกำหนดด้าน ePrivacy และกฎระเบียบให้ความคุ้มครองข้อมูลส่วนบุคคลของผู้บริโภค (GDPR) ของสหภาพยุโรป

คู่มือนี้จะระบุขั้นตอนที่จำเป็นในการรองรับข้อความ GDPR IAB TCF เวอร์ชัน 2 ซึ่งเป็นส่วนหนึ่งของ UMP SDK โดยมีจุดประสงค์เพื่อใช้ร่วมกับเริ่มต้นใช้งาน ซึ่งจะแสดงภาพรวมของวิธีทำให้แอปทำงานร่วมกับ UMP SDK และข้อมูลเบื้องต้นเกี่ยวกับการตั้งค่าข้อความ คำแนะนำต่อไปนี้มีไว้สำหรับข้อความ GDPR TCF เวอร์ชัน 2 ของ IAB โดยเฉพาะ ดูข้อมูลเพิ่มเติมได้ที่ข้อกำหนดของ IAB มีผลต่อข้อความขอความยินยอมในสหภาพยุโรปอย่างไร

ข้อกำหนดเบื้องต้น

GDPR กำหนดให้มีการเพิกถอนความยินยอมเพื่ออนุญาตให้ผู้ใช้ถอนตัวเลือกความยินยอมได้ทุกเมื่อ ดูตัวเลือกความเป็นส่วนตัวเพื่อใช้วิธีให้ผู้ใช้ถอนตัวเลือกความยินยอม

หากต้องการระบุว่าผู้ใช้มีอายุต่ำกว่าอายุที่ให้ความยินยอมได้หรือไม่ ให้ตั้งค่า setTagForUnderAgeOfConsent (TFUA) เมื่อคุณตั้งค่า TFUA เป็น true, UMP SDK จะไม่ขอความยินยอมจากผู้ใช้ หากแอปมีกลุ่มเป้าหมายทั้งเด็กและผู้ใหญ่ ให้ตั้งค่าพารามิเตอร์นี้สำหรับผู้ใช้ที่เป็นเด็กเพื่อให้แน่ใจว่าจะไม่มีการขอความยินยอม

ตัวอย่างต่อไปนี้ตั้งค่า TFUA เป็น "จริง" ในคำขอความยินยอมของ UMP

Java

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

Kotlin

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

หากต้องการตั้งค่าความยินยอมในสื่อกลาง AdMob ให้ทำตามขั้นตอนในส่วนต่อไปนี้

เพิ่มพาร์ทเนอร์โฆษณาลงในข้อความ GDPR

ทำตามขั้นตอนในหัวข้อเพิ่มพาร์ทเนอร์โฆษณาลงในข้อความ GDPR ที่เผยแพร่เพื่อเพิ่มพาร์ทเนอร์สื่อกลางลงในรายชื่อพาร์ทเนอร์โฆษณา มิเช่นนั้นอาจทำให้พาร์ทเนอร์แสดงโฆษณาในแอปของคุณไม่ได้

ตารางต่อไปนี้แสดงชื่อพาร์ทเนอร์เทคโนโลยีโฆษณาสำหรับแหล่งที่มาของโฆษณาแต่ละแหล่ง

แหล่งที่มาของโฆษณา ชื่อพาร์ทเนอร์เทคโนโลยีโฆษณา
AppLovin AppLovin Corp.
BidMachine BidMachine
SDK โฆษณา BIGO Empathy Technology Pte.Ltd. (BIGO Ads)
Chartboost Chartboost
DT Exchange DT Exchange (การสร้างรายได้ของ Fyber)
i-mobile i-mobile
InMobi InMobi
ironSource Ads ironSource Mobile
Liftoff Monetize Liftoff
LY Ads Network LY Ads Network
maio maio
Meta Audience Network Meta
Mintegral Mobvista/Mintegral
SDK โฆษณา Moloco Moloco Ads
myTarget Mail.ru
Pangle Pangle DSP
PubMatic OpenWrap SDK PubMatic
Unity Ads Unity Ads
Verve HyBid SDK Verve Group

ตารางต่อไปนี้แสดงแหล่งที่มาของโฆษณาที่รองรับการส่งสัญญาณความยินยอมตาม GDPR จากแพลตฟอร์มการจัดการความยินยอมที่ผสานรวมกับกรอบความโปร่งใสและความยินยอม (TCF) ของ IAB และข้อกำหนดความยินยอมเพิ่มเติมของ Google ไปยัง SDK ของแหล่งที่มาของโฆษณา

แหล่งที่มาของโฆษณา เวอร์ชันต่ำสุดที่รองรับ
AppLovin 12.0.0.0
BidMachine 3.3.0.0
SDK โฆษณา BIGO 5.5.2.0
Chartboost 9.13.0.0
DT Exchange 8.3.0.0
i-mobile ไม่มี1
InMobi 10.7.5.0
ironSource Ads 7.7.0.0
Liftoff Monetize 7.4.1.0
LY Ads Network ไม่มี1
maio ไม่มี1
Meta Audience Network ไม่มี2
Mintegral 17.1.61.1
SDK โฆษณา Moloco 3.5.0.0
myTarget 5.51.2.0
Pangle 7.9.0.9.0
PubMatic OpenWrap SDK 4.7.0.0
Unity Ads 4.19.0.1
Verve HyBid SDK 3.7.1.0

1 แหล่งที่มาของโฆษณาไม่แสดงการเข้าชมใน EEA

2 โปรดติดต่อผู้จัดการพาร์ทเนอร์ของ Meta เพื่อขอรายละเอียด

หลังจากรวบรวมความยินยอมตาม 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 = String.valueOf(purposeConsents.charAt(0));
  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.isNullOrEmpty()) {
  val purposeOneString = purposeConsents.first().toString()
  val hasConsentForPurposeOne = purposeOneString == "1"
}

คำถามที่พบบ่อย

จะเกิดอะไรขึ้นหากฉันไม่ดำเนินการใดๆ เพื่อให้เป็นไปตามข้อกำหนดของแพลตฟอร์มการจัดการความยินยอมสำหรับการแสดงโฆษณาใน EEA, สหราชอาณาจักร และสวิตเซอร์แลนด์

ตั้งแต่วันที่ 16 มกราคม 2024 เป็นต้นไป หากพาร์ทเนอร์ไม่ได้ใช้ CMP ที่ผ่านการรับรองจาก Google จะมีเพียงโฆษณาแบบจำกัดเท่านั้นที่มีสิทธิ์แสดงในการเข้าชมจาก EEA และสหราชอาณาจักร

เราจะเริ่มบังคับใช้ในวันที่ 16 มกราคม 2024 กับการเข้าชมจำนวนเล็กน้อยใน EEA และสหราชอาณาจักร แล้วจะเพิ่มสัดส่วนการบังคับใช้ขึ้นเรื่อยๆ ไปจนครบทุกการเข้าชมใน EEA และสหราชอาณาจักรภายในสิ้นเดือนกุมภาพันธ์ 2024 โปรดใช้ CMP ที่ได้รับการรับรองภายในวันที่ 16 มกราคม 2024 เพื่อให้รายได้ของคุณไม่ได้รับผลกระทบจากข้อกำหนดนี้

ฉันจะตรวจสอบได้อย่างไรว่าผู้ใช้ให้ความยินยอมหรือไม่

ความยินยอมไม่ได้แสดงด้วยบิตเดียว แต่เป็นชุดวัตถุประสงค์และผู้ให้บริการตามที่ระบุไว้ในข้อกำหนด TCF ของ IAB ดูเกณฑ์การปรับโฆษณาตามโปรไฟล์ของผู้ใช้ของ Google Ads ได้ที่ นโยบายความยินยอม: โฆษณาที่ปรับและไม่ได้ปรับตามโปรไฟล์ของผู้ใช้

นอกจากนี้ เทคโนโลยีโฆษณาในรายชื่อผู้ให้บริการเทคโนโลยีโฆษณา (ATP) ของ Google ที่ไม่ได้จดทะเบียนในรายชื่อผู้ให้บริการ TCF จะใช้รายละเอียดทางเทคนิคเกี่ยวกับความยินยอมเพิ่มเติมของ Google เพื่อรวบรวมความยินยอม Google เผยแพร่รายชื่อและรหัสของผู้ให้บริการเทคโนโลยีโฆษณาที่ไม่ได้จดทะเบียนกับ IAB ไว้ที่ https://storage.googleapis.com/tcfac/additional-consent-providers.csv

หากต้องการแก้ไขข้อบกพร่องของคำขอโฆษณาแต่ละรายการ ให้ใช้ฟีเจอร์แก้ปัญหาการตั้งค่าความเป็นส่วนตัวในเครื่องมือตรวจสอบโฆษณาเพื่อดูสัญญาณความเป็นส่วนตัวต่อไปนี้ที่ส่งในคำขอโฆษณาซึ่งเป็นส่วนหนึ่งของการผสานรวมผู้เผยแพร่โฆษณากับ TCF ของ IAB Europe

ป้ายกำกับเครื่องมือตรวจสอบโฆษณา พารามิเตอร์การค้นหาคำขอโฆษณา ความหมาย
GDPR มีผล (IABTCF_gdprApplies) gdpr GDPR มีผลกับคำขอโฆษณานี้หรือไม่
สตริง TC (IABTCF_TCString) gdpr_consent สตริง TC IAB มีเครื่องมือบนเว็บที่คุณสามารถถอดรหัสค่าได้ด้วยตนเอง
สตริง AC (IABTCF_AddtlConsent) addtl_consent สตริง AC จากข้อกำหนดทางเทคนิคเกี่ยวกับความยินยอมเพิ่มเติมของ Google

หากต้องการอ่านตัวเลือกความยินยอมแบบเป็นโปรแกรม โปรดดูข้อมูลเพิ่มเติมที่หัวข้อวิธีอ่านตัวเลือกความยินยอม

ฉันจำเป็นต้องใช้ UMP SDK ของ Google เพื่อให้เป็นไปตามข้อกำหนด CMP ไหม

ไม่ คุณสามารถใช้ CMP ใดก็ได้จากรายการ CMP ที่ได้รับการรับรองจาก Google เพื่อแสดงโฆษณา

ฉันจะแสดงแบบฟอร์มความยินยอมอีกครั้งโดยใช้ UMP SDK ได้อย่างไร แม้ว่าผู้ใช้จะให้ความยินยอมแล้วก็ตาม

หากผู้ใช้ได้ตัดสินใจเกี่ยวกับความยินยอมแล้ว โซลูชันการจัดการความยินยอมของ Google จะไม่ขอรวบรวมความยินยอมใหม่จนกว่าสตริง TC จะหมดอายุหรือใช้ไม่ได้

GDPR กำหนดให้มีการแก้ไขความยินยอมเพื่อให้ผู้ใช้ถอนตัวเลือกความยินยอมได้ทุกเมื่อ ดูตัวเลือกความเป็นส่วนตัวเพื่อใช้วิธีให้ผู้ใช้ถอนตัวเลือกความยินยอม หากต้องการแสดงแบบฟอร์มความยินยอมอีกครั้ง ให้เรียกใช้ showPrivacyOptionsForm()

ฉันผสานรวม CMP ที่ได้รับการรับรองจาก Google แล้ว แต่ไม่เห็นคำขอโฆษณาที่ส่งไปยังพาร์ทเนอร์สื่อกลาง แม้แต่จากผู้ใช้ที่ให้ความยินยอม เหตุใดจึงเป็นเช่นนี้

ภายใต้ TCF นั้น Google จะตรวจสอบว่าผู้ให้บริการเทคโนโลยีโฆษณาและแหล่งที่มาของดีมานด์โฆษณาแบบเป็นโปรแกรมอื่นๆ ไม่ได้ละเมิดนโยบายของ Google และมีพื้นฐานทางกฎหมายอย่างน้อย 1 อย่างในการประมวลผลข้อมูล ก่อนที่จะเพิ่มผู้ให้บริการและแหล่งที่มาดังกล่าวในการแสดงโฆษณาสื่อกลางตามลำดับขั้น ไปที่ส่วนสื่อกลางเพื่อดูข้อมูลเพิ่มเติม

พาร์ทเนอร์สื่อกลางบางรายในรายชื่อผู้ให้บริการเทคโนโลยีโฆษณา (ATP) ของ Google ไม่ได้ลงทะเบียนในรายชื่อผู้ให้บริการ TCF พาร์ทเนอร์เหล่านี้ใช้ข้อกำหนดทางเทคนิคเกี่ยวกับความยินยอมเพิ่มเติมของ Google แทนในการรวบรวมความยินยอม Google เผยแพร่รายชื่อและรหัสของผู้ให้บริการเทคโนโลยีโฆษณาที่ไม่ได้ลงทะเบียนกับ IAB ไว้ที่ https://storage.googleapis.com/tcfac/additional-consent-providers.csv

UMP SDK รองรับการจัดเก็บ ACString ซึ่งช่วยให้คุณเพิ่มพาร์ทเนอร์โฆษณาลงในข้อความ GDPR ที่เผยแพร่ได้โดยไม่ต้องทำความเข้าใจว่าพาร์ทเนอร์ลงทะเบียน TCF หรือไม่ เมื่อใช้ CMP ของบุคคลที่สาม คุณควรทำดังนี้

  1. ตรวจสอบว่า CMP ของบุคคลที่สามรองรับการจัดเก็บ ACString
  2. รวมพาร์ทเนอร์สื่อกลางแต่ละรายไว้ในรายชื่อผู้ให้บริการเทคโนโลยีโฆษณาที่ CMP ของบุคคลที่สามใช้เพื่อรวบรวมความยินยอม
ฉันจะเปลี่ยนวิธีการทำงานของแอปได้ไหมหากผู้ใช้ไม่ยินยอม นโยบายอนุญาตให้ทำเช่นนี้หรือไม่

ผู้เผยแพร่โฆษณาสามารถอ่านสตริง TCF ของ IAB ในแอปของตนได้ ดูข้อมูลเกี่ยวกับการอ่านตัวเลือกความยินยอมแบบเป็นโปรแกรมได้ที่วิธีอ่านตัวเลือกความยินยอม ผู้เผยแพร่โฆษณาควรตรวจสอบภาระหน้าที่ของตนภายใต้กฎระเบียบที่เกี่ยวข้องกับที่ปรึกษาด้านกฎหมาย

เมื่อเลือกจัดการตัวเลือกและให้ความยินยอมสำหรับวัตถุประสงค์ทั้งหมดแล้ว ฉันไม่เห็นโฆษณาใดๆ เลย เหตุใดจึงเป็นเช่นนี้

นอกจากการรวบรวมความยินยอมตามวัตถุประสงค์แล้ว คุณยังต้องรวบรวมความยินยอมของผู้ให้บริการด้วย ผู้ให้บริการ เช่น Google ต้องได้รับทั้งความยินยอมตามวัตถุประสงค์และความยินยอมของผู้ให้บริการเพื่อแสดงโฆษณาที่เหมาะสม

ฉันจะใช้สตริง AC เวอร์ชัน 2 สําหรับผู้ใช้ที่ให้ความยินยอมในเวอร์ชัน 1 แล้วได้อย่างไร

ตรวจสอบคีย์ IABTCF_AddtlConsent ในพื้นที่เก็บข้อมูลในเครื่องตามข้อกำหนดทางเทคนิคเกี่ยวกับความยินยอมเพิ่มเติมของ Google เพื่อพิจารณาว่าผู้ใช้ได้ให้ความยินยอมแก่สตริง AC เวอร์ชัน 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"
}