การขอคํายินยอมจากผู้ใช้ในยุโรป

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

ทำตามเริ่มต้นใช้งานด้วยปลั๊กอิน GMA Flutter เวอร์ชัน 1.3.0 ซึ่งรองรับ SDK สำหรับ User Messaging Platform

โปรดอ่าน ข้อกําหนดของ IAB ส่งผลต่อข้อความขอความยินยอมในสหภาพยุโรปอย่างไร

เกริ่นนำ

UMP SDK มีเครื่องมือให้ผู้เผยแพร่โฆษณาสามารถขอความยินยอมสำหรับ โฆษณาที่ปรับตามโปรไฟล์ของผู้ใช้ ตลอดจนจัดการกับ ข้อกำหนดด้านความโปร่งใสในการติดตามแอปของ Apple (ATT) ผู้เผยแพร่โฆษณาจะใช้ UMP SDK เพื่อจัดการคําขออย่างใดอย่างหนึ่งหรือทั้ง 2 รายการนี้ได้โดยแสดงแบบฟอร์มเดียว เนื่องจากการกําหนดค่าทั้งหมดเกิดขึ้นใน ความเป็นส่วนตัวและการแสดงข้อความแจ้งผู้ใช้ของ Ad Manager

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

Google มี SDK สำหรับ User Messaging Platform (UMP) เพื่อสนับสนุนให้ผู้เผยแพร่โฆษณาปฏิบัติตามหน้าที่ของตนภายใต้นโยบายนี้ UMP SDK ได้รับการอัปเดตให้รองรับ มาตรฐาน IAB ล่าสุด นอกจากนี้ เรายังทำให้กระบวนการตั้งค่าแบบฟอร์มคำยินยอมและรายชื่อพาร์ทเนอร์โฆษณาง่ายขึ้นด้วย ตอนนี้คุณจะจัดการการกําหนดค่าทั้งหมดเหล่านี้ได้อย่างสะดวกใน ความเป็นส่วนตัวและการแสดงข้อความแจ้งผู้ใช้ของ Ad Manager

คู่มือนี้จะแนะนำวิธีติดตั้ง SDK, ใช้โซลูชัน IAB และการเปิดใช้ฟีเจอร์การทดสอบ

ความโปร่งใสในการติดตามแอป (iOS เท่านั้น)

หากคุณวางแผนที่จะใช้ UMP SDK เพื่อจัดการกับข้อกำหนดความโปร่งใสในการติดตามแอปของ Apple โปรดตรวจสอบว่าคุณได้สร้าง กำหนดค่า และเผยแพร่ข้อความ ATT โดยใช้ ความเป็นส่วนตัวและการแสดงข้อความแจ้งผู้ใช้ของ Ad Manager

เพื่อให้ UMP SDK แสดงข้อความแจ้งเตือนที่กำหนดเองได้ โปรดอัปเดต Info.plist เพื่อเพิ่มคีย์ NSUserTrackingUsageDescription ด้วยสตริงข้อความที่กำหนดเองซึ่งอธิบายถึงการใช้งานของคุณ

<key>NSUserTrackingUsageDescription</key>
<string>This identifier will be used to deliver personalized ads to you.</string>

คําอธิบายการใช้งานจะปรากฏเป็นส่วนหนึ่งของกล่องโต้ตอบ ATT เมื่อคุณแสดงแบบฟอร์มความยินยอม

ถัดไป คุณจะต้องลิงก์เฟรมเวิร์ก AppTrackingTransparency ต่อไปนี้

ขณะทดสอบ โปรดทราบว่าข้อกําหนดของ Apple กล่องโต้ตอบ ATT ของ IDFA จะปรากฏเพียงครั้งเดียวเท่านั้นเนื่องจาก requestTrackingAuthorization: เป็นคําขอแบบครั้งเดียว หากต้องการให้การแจ้งเตือนปรากฏขึ้นเป็นครั้งที่ 2 คุณต้องถอนการติดตั้งแอปแล้วติดตั้งอีกครั้งในอุปกรณ์ทดสอบ

การใช้ SDK

SDK ออกแบบมาเพื่อใช้ในแบบเชิงเส้น ขั้นตอนการใช้ SDK มีดังนี้

  1. ขอข้อมูลความยินยอมล่าสุด
  2. ตรวจสอบว่าต้องได้รับความยินยอมหรือไม่
  3. ตรวจสอบว่าแบบฟอร์มพร้อมใช้งานหรือไม่ และหากใช่ ให้โหลดแบบฟอร์ม
  4. นำเสนอแบบฟอร์ม
  5. มอบวิธีให้ผู้ใช้เปลี่ยนความยินยอม

เราขอแนะนำให้คุณขออัปเดตข้อมูลการขอความยินยอมทุกครั้งที่เปิดแอป ข้อมูลนี้จะระบุว่าผู้ใช้ต้องให้คำยินยอมหรือไม่

final params = ConsentRequestParameters();
ConsentInformation.instance.requestConsentInfoUpdate(
  params,
  () async {
    // The consent information state was updated.
    // You are now ready to check if a form is available.
  },
  (FormError error) {
    // Handle the error
  },
);

โหลดแบบฟอร์ม (หากมี)

แบบฟอร์มสำหรับการขอความยินยอมจะสร้างขึ้นใน Ad Manager UI เมื่อตัดสินใจแล้วว่าจะขอความยินยอมจากผู้ใช้ ขั้นตอนต่อไปคือพิจารณาว่ามีแบบฟอร์มหรือไม่ สาเหตุที่ทำให้ฟอร์มไม่พร้อมใช้งานนั้นมีได้หลายประการ เช่น

  • ผู้ใช้ได้เปิดใช้การจำกัดการติดตามโฆษณา
  • คุณติดแท็กผู้ใช้ว่ามีอายุต่ำกว่าเกณฑ์

หากต้องการตรวจสอบว่าแบบฟอร์มพร้อมใช้งานหรือไม่ ให้ใช้เมธอด isConsentFormAvailable() ในอินสแตนซ์ ConsentInformation เพิ่มเมธอด Wrapper สำหรับการโหลดแบบฟอร์ม

final params = ConsentRequestParameters();
ConsentInformation.instance.requestConsentInfoUpdate(
  params,
  () async {
    if (await ConsentInformation.instance.isConsentFormAvailable()) {
      loadForm();
    }
  },
  (FormError error) {
    // Handle the error
  },
);

หากต้องการโหลดแบบฟอร์ม คุณจะใช้เมธอด loadConsentForm() แบบคงที่ในคลาส ConsentForm เปลี่ยนเมธอด loadForm() ของคุณดังนี้

void loadForm() {
  ConsentForm.loadConsentForm(
    (ConsentForm consentForm) async {
      // Present the form
    },
    (FormError formError) {
      // Handle the error
    },
  );
}

แสดงแบบฟอร์มหากจำเป็น

หากต้องการแสดงแบบฟอร์มความยินยอม ให้ใช้เมธอด show() ในชั้นเรียน ConsentForm คุณต้องกำหนดว่าผู้ใช้ต้องได้รับความยินยอมก่อนที่จะแสดงแบบฟอร์มหรือไม่ หากต้องการตรวจสอบว่าจำเป็นต้องได้รับความยินยอมหรือไม่ ให้เรียกใช้ getConsentStatus() ในออบเจ็กต์ ConsentInformation ซึ่งแสดงผล enum ของประเภท ConsentStatus ค่าที่เป็นไปได้สำหรับ ConsentStatus มีอยู่ 4 ค่าดังนี้

  • unknown: สถานะความยินยอมที่ไม่รู้จัก
  • required: ต้องได้รับความยินยอมจากผู้ใช้แต่ยังไม่ได้รับ
  • notRequired: ไม่จำเป็นต้องได้รับความยินยอมจากผู้ใช้ ตัวอย่างเช่น ผู้ใช้ไม่ได้อยู่ใน EEA หรือสหราชอาณาจักร
  • obtained: ได้รับความยินยอมจากผู้ใช้ ไม่ได้กำหนดการปรับเปลี่ยนในแบบของคุณ

เปลี่ยนเมธอด loadForm ของคุณดังนี้

void loadForm() {
  ConsentForm.loadConsentForm(
    (ConsentForm consentForm) async {
      var status = await ConsentInformation.instance.getConsentStatus();
      if (status == ConsentStatus.required) {
        consentForm.show(
          (FormError formError) {
            // Handle dismissal by reloading form
            loadForm();
          },
        );
      }
    },
    (formError) {
      // Handle the error
    },
  );
}

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

การทดสอบ

บังคับใช้ภูมิศาสตร์

UMP SDK มีวิธีทดสอบลักษณะการทำงานของแอปเสมือนว่าอุปกรณ์อยู่ใน EEA โดยใช้ ConsentDebugSettings.debugGeography

คุณจะต้องระบุรหัสที่แฮชของอุปกรณ์ทดสอบในการตั้งค่าการแก้ไขข้อบกพร่องของแอปเพื่อใช้ฟังก์ชันการแก้ไขข้อบกพร่อง หากคุณเรียกใช้ requestConsentInfoUpdate() โดยไม่ตั้งค่านี้ แอปจะบันทึกแฮชรหัสที่จำเป็นเมื่อเรียกใช้

ConsentDebugSettings debugSettings = ConsentDebugSettings(
  debugGeography: DebugGeography.debugGeographyEea,
  testIdentifiers: ['TEST-DEVICE-HASHED-ID']);

ConsentRequestParameters params = ConsentRequestParameters(
  consentDebugSettings: debugSettings);

ConsentInformation.instance.requestConsentInfoUpdate(
  params,
  () {},
  (error) {});

หากต้องการบังคับให้ SDK ดำเนินการกับอุปกรณ์เสมือนว่าไม่ได้อยู่ใน EEA หรือสหราชอาณาจักร ให้ใช้ DebugGeography.debugGeographyNotEea โปรดทราบว่าการตั้งค่าการแก้ไขข้อบกพร่อง ใช้ได้กับอุปกรณ์ทดสอบเท่านั้น ไม่จำเป็นต้องเพิ่มโปรแกรมจำลองลงในรายการรหัสอุปกรณ์เนื่องจากเปิดใช้การทดสอบโดยค่าเริ่มต้น

ในการทดสอบแอปด้วย UMP SDK การรีเซ็ตสถานะของ SDK จะช่วยให้สามารถจำลองประสบการณ์การติดตั้งครั้งแรกของผู้ใช้ได้ SDK มีเมธอด reset ในการดำเนินการดังกล่าว

ConsentInformation.instance.reset();

คุณควรรีเซ็ตการโทรด้วยหากตัดสินใจที่จะนำ UMP SDK ออกจากโปรเจ็กต์โดยสมบูรณ์

บริการไกล่เกลี่ย

หากใช้สื่อกลาง คุณจะต้องจัดการความยินยอมสำหรับพาร์ทเนอร์สื่อกลางแตกต่างกันไปตามกรอบความยินยอมที่คุณเลือกใช้ในแอป Google รองรับกรอบความยินยอมของ IAB แต่ยังอนุญาตให้คุณมีโซลูชันความยินยอมที่กำหนดเองได้ด้วย ด้านล่างนี้เป็นรายละเอียดเกี่ยวกับวิธีจัดการ สื่อกลางในแต่ละตัวเลือกเหล่านี้ ดูข้อมูลเพิ่มเติมเกี่ยวกับโซลูชันการขอความยินยอม

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

หากใช้โซลูชันความยินยอมที่กําหนดเอง คุณมีหน้าที่แจ้ง SDK ของบุคคลที่สามเกี่ยวกับสถานะความยินยอมของแอป เครือข่ายสื่อกลางแต่ละเครือข่ายมี API ของตนเองสำหรับจัดการความยินยอม ซึ่งเป็นเอกสารสำหรับ Android และ iOS

ดูการใช้ API เฉพาะเครือข่าย เพื่อเรียนรู้วิธีเรียก API เหล่านี้จาก Dart

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

final AdManagerAdRequest = AdManagerAdRequest(nonPersonalizedAds: true);

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