สร้างโหมดความยินยอมสําหรับแอป

หน้านี้มีไว้สำหรับนักพัฒนาซอฟต์แวร์ที่ใช้ SDK ของ Google Analytics สำหรับ Firebase ในแอปและต้องการผสานรวมโหมดความยินยอม หากต้องการดูข้อมูลเบื้องต้นเกี่ยวกับโหมดความยินยอม โปรดอ่านภาพรวมของโหมดความยินยอม

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

ก่อนเริ่มต้น

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

  • SDK ของ Google Analytics สำหรับ Firebase
  • แบนเนอร์การตั้งค่าความยินยอมเพื่อบันทึกความยินยอมของผู้ใช้

หากต้องการตั้งค่าโหมดความยินยอม คุณต้องทำดังนี้

  1. ก่อนที่ผู้ใช้จะให้ความยินยอม: ปิดใช้การรวบรวมข้อมูลของ Analytics ชั่วคราว
  2. ตั้งค่าสถานะความยินยอมเริ่มต้น
  3. อัปเดตสถานะความยินยอมตามการโต้ตอบของผู้ใช้กับการตั้งค่าความยินยอม
  4. เปิดใช้การรวบรวมข้อมูล Analytics อีกครั้ง

ปิดใช้การรวบรวมข้อมูลของ Analytics ชั่วคราว

การใช้งานโหมดความยินยอมพื้นฐานหมายถึงการบล็อก SDK ของ Google Analytics สำหรับ Firebase ไม่ให้โหลดจนกว่าผู้ใช้จะให้ความยินยอม

หากต้องการปิดใช้การรวบรวมข้อมูลของ Analytics ชั่วคราว ให้ตั้งค่า firebase_analytics_collection_enabled เป็น false ใน AndroidManifest.xml ของแอปในแท็กแอปพลิเคชัน เช่น

<meta-data android:name="firebase_analytics_collection_enabled" android:value="false" />

โดยค่าเริ่มต้น จะไม่มีการกำหนดค่าโหมดความยินยอม วิธีตั้งค่าสถานะความยินยอมเริ่มต้นให้แอป

  1. เปิดไฟล์ AndroidManifest.xml ของแอป
  2. เพิ่มคู่คีย์-ค่าของโหมดความยินยอม คีย์จะอธิบายประเภทความยินยอม และค่าบ่งบอกถึงสถานะความยินยอม ค่าอาจเป็น true หมายความว่าได้รับความยินยอมแล้ว หรือ false หมายความว่าความยินยอมถูกปฏิเสธ ตั้งค่าดังต่อไปนี้

    • google_analytics_default_allow_analytics_storage
    • google_analytics_default_allow_ad_storage
    • google_analytics_default_allow_ad_user_data
    • google_analytics_default_allow_ad_personalization_signals
  3. บันทึกการเปลี่ยนแปลง ถัดไป ให้ใช้กลไกการอัปเดตค่าความยินยอม

เช่น หากต้องการตั้งค่าความยินยอมทั้งหมดให้พารามิเตอร์ทั้งหมดโดยค่าเริ่มต้น ให้ทําดังนี้

<meta-data android:name="google_analytics_default_allow_analytics_storage" android:value="true" />
<meta-data android:name="google_analytics_default_allow_ad_storage" android:value="true" />
<meta-data android:name="google_analytics_default_allow_ad_user_data" android:value="true" />
<meta-data android:name="google_analytics_default_allow_ad_personalization_signals" android:value="true" />

เปิดใช้การรวบรวมข้อมูล Analytics อีกครั้ง

หลังจากที่ผู้ใช้ให้ความยินยอมแล้ว ให้เปิดใช้การรวบรวม Analytics อีกครั้งโดยใช้เมธอด setAnalyticsCollectionEnabled()

ค่าที่เมธอด setAnalyticsCollectionEnabled กำหนดจะยังคงอยู่ในการเรียกใช้แอปและลบล้างค่าของ FIREBASE_ANALYTICS_COLLECTION_ENABLED ในไฟล์ AndroidManifest.xml ของแอป เมื่อคุณกำหนดค่าให้กับ setAnalyticsCollectionEnabled แล้ว การรวบรวมข้อมูลของ Analytics จะยังคงอยู่ในสถานะนั้นจนกว่าจะมีการเรียกใช้ setAnalyticsCollectionEnabled อีกครั้ง แม้ว่าผู้ใช้จะปิดและเปิดแอปอีกครั้งก็ตาม

วิธีอัปเดตการรวบรวมข้อมูลของ Analytics

setAnalyticsCollectionEnabled(true);

หากต้องการอัปเดตค่าความยินยอมหลังจากเปิดแอปแล้ว ให้เรียกใช้เมธอด setConsent

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

หากผู้ใช้ถอนความยินยอมที่เคยให้ไว้กับ Analytics หรือพื้นที่เก็บข้อมูลโฆษณา Google Analytics จะลบพร็อพเพอร์ตี้ผู้ใช้ทั้งหมด รวมถึงความยินยอมสําหรับ ad_personalization ด้วย หากต้องการรักษาตัวเลือกความยินยอมของผู้ใช้สำหรับการปรับโฆษณาตามโปรไฟล์ของผู้ใช้ไว้ ให้คืนค่า ค่าก่อนหน้าสำหรับการปรับโฆษณาตามโปรไฟล์ของผู้ใช้โดยใช้ setConsent (Kotlin+KTX | Java)

ตัวอย่างต่อไปนี้แสดงเมธอด setConsent ซึ่งอัปเดตค่าความยินยอมต่างๆ เป็น granted

Java

// Set consent types.
Map<ConsentType, ConsentStatus> consentMap = new EnumMap<>(ConsentType.class);
consentMap.put(ConsentType.ANALYTICS_STORAGE, ConsentStatus.GRANTED);
consentMap.put(ConsentType.AD_STORAGE, ConsentStatus.GRANTED);
consentMap.put(ConsentType.AD_USER_DATA, ConsentStatus.GRANTED);
consentMap.put(ConsentType.AD_PERSONALIZATION, ConsentStatus.GRANTED);

mFirebaseAnalytics.setConsent(consentMap);

Kotlin

Firebase.analytics.setConsent {
  analyticsStorage(ConsentStatus.GRANTED)
  adStorage(ConsentStatus.GRANTED)
  adUserData(ConsentStatus.GRANTED)
  adPersonalization(ConsentStatus.GRANTED)
}