คู่มือการแก้ปัญหา Privacy Sandbox สำหรับ Android

เอกสารนี้จะอธิบายวิธีแก้ปัญหาทั่วไปเมื่อตั้งค่า Privacy Sandbox ใน Android หากไม่พบข้อผิดพลาดในคู่มือนี้ โปรดแจ้งให้เราทราบ

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

ก่อนแก้ปัญหา

ปิดใช้การอัปเดตการกำหนดค่าอุปกรณ์

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

ปิดใช้การอัปเดตการกำหนดค่าอุปกรณ์ด้วยคำสั่งนี้

adb shell device_config set_sync_disabled_for_tests persistent

ถ้าต้องการเปิดใช้การอัปเดตการกำหนดค่าอุปกรณ์อีกครั้งหลังการทดสอบ ก็สามารถทำได้ด้วยคำสั่งนี้

adb shell device_config set_sync_disabled_for_tests none

เปิดใช้การบันทึกแบบละเอียดของ Adservices

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

adb shell setprop log.tag.adservices VERBOSE

ตรวจสอบว่ากำหนดค่าอุปกรณ์ถูกต้องแล้ว

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

  • เปิดใช้ PPAPI ด้วยคำสั่ง adb ที่เกี่ยวข้อง
  • ลงทะเบียนอุปกรณ์หรือปิดใช้งานการลงทะเบียนโดยขึ้นอยู่กับเป้าหมายของคุณ

ตรวจสอบโค้ดเพื่อให้แน่ใจว่า PPAPI พร้อมใช้งาน

คุณเพิ่มการตรวจสอบลงในฐานของโค้ดได้เพื่อให้อุปกรณ์มีเวอร์ชันที่ถูกต้องซึ่ง Privacy Sandbox ต้องการ

หากใช้รุ่นเบต้าผ่านส่วนขยาย SDK ให้ตรวจสอบว่าเวอร์ชันของบิลด์และส่วนขยาย SDK ถูกต้อง

หากคุณใช้รุ่นเบต้าผ่าน Jetpack Libraries ฟังก์ชันการเริ่มต้นจะแสดงผล null หาก Privacy Sandbox ไม่พร้อมใช้งานในอุปกรณ์ เช่น

สำหรับรุ่นใดก็ตาม ให้ตรวจสอบบริการ Google Play ดังนี้

ข้อยกเว้นด้านความปลอดภัย

ข้อผิดพลาดข้อยกเว้นด้านความปลอดภัยมักจะเกิดขึ้นเมื่อมีบางสิ่งไม่ได้รับอนุญาตให้เข้าถึงทรัพยากร Privacy Sandbox

ไม่ได้ขอสิทธิ์

ข้อผิดพลาด:

Failed to get Ad ID: java.lang.SecurityException: Caller is not authorized to call this API. Permission was not requested.

สาเหตุที่เป็นไปได้:

คุณต้องประกาศสิทธิ์ในการเข้าถึงรหัสโฆษณา

วิธีแก้

ประกาศสิทธิ์ใน AndroidManifest.xml ของคุณ

<uses-permission android:name="android.permission.ACCESS_ADSERVICES_AD_ID" />

ผู้โทรไม่ได้รับอนุญาต

ข้อผิดพลาด:

Failed to find resolveInfo for adServices service. Intent action: android.adservices.adid.AdIdProviderService

Failed to find AdServices services

Caller not authorized

สาเหตุที่เป็นไปได้:

คุณลงทะเบียนอุปกรณ์ไม่ถูกต้อง ตรวจสอบว่าคุณได้ทำตามวิธีการลงทะเบียนทั้งหมด ซึ่งรวมถึงขั้นตอนหลังการลงทะเบียนเพื่อกำหนดค่าอุปกรณ์

สาเหตุที่เป็นไปได้:

URL การลงทะเบียนไม่ตรงกัน

วิธีแก้

  1. ดูข้อมูลการลงทะเบียนเพื่อดูว่ามีความแตกต่างระหว่าง URL ที่ใช้ในโค้ดและ URL ที่คุณลงทะเบียนกับ Privacy Sandbox หรือไม่ ตัวอย่างเช่น คุณอาจใช้ https://adtech.example.com/source แต่ URL ที่จดทะเบียนคือ https://adtech.example.com/register_source
  2. ปรับเปลี่ยนโค้ดของคุณให้ตรงกับ URL ที่ลงทะเบียน เช่น คุณสามารถปรับบรรทัดในแอปตัวอย่างเพื่อเพิ่ม "/register_source" ต่อท้าย URL แทนที่จะเป็น "/source"

หากยังคงเห็นข้อผิดพลาดนี้อยู่ ให้ทำดังนี้

บริษัทของคุณอาจไม่อยู่ในรายชื่อการลงทะเบียน หรือบริษัทลงทะเบียนแล้ว แต่ไม่ได้อยู่ในรายการที่อนุญาตในไฟล์ Manifest ของแอป ตรวจสอบว่าองค์กรของคุณลงทะเบียน กับ Privacy Sandbox แล้วโดยติดต่อ android-ps-support@google.com

ไม่อนุญาตให้ใช้ผู้โทร

ข้อผิดพลาด:

Failed to get Ad ID: java.lang.SecurityException: Caller is not authorized to call this API. Caller is not allowed. Package [package name] is not allowed to call the API.

สาเหตุที่เป็นไปได้:

ชื่อแพ็กเกจไม่ได้อยู่ในรายการที่อนุญาต

วิธีแก้

อนุญาตชื่อแพ็กเกจทั้งหมดในรายการที่อนุญาต:

หากใช้ adb Shell โดยตรง ให้ทำดังนี้

คำสั่งที่แสดงก่อนหน้านี้ใช้งานได้กับ Bash และ Shell อื่นๆ แต่ถ้าคุณเริ่มต้น adb Shell โดยตรงและลองเรียกใช้คำสั่ง คุณไม่ควรออกจากเครื่องหมายคำพูด แต่ให้เรียกใช้คำสั่งดังนี้

วิธีแก้

เพิ่มชื่อแพ็กเกจลงในรายการที่อนุญาต

adb shell device_config put adservices ppapi_app_allow_list [package name]

ตรวจสอบว่าชื่อแพ็กเกจอยู่ในรายการที่อนุญาต โดยทำดังนี้

adb shell device_config get adservices ppapi_app_allow_list

หากจำเป็น คุณสามารถลบรายการที่อนุญาตด้วยคำสั่งนี้ได้

adb shell device_config delete adservices ppapi_app_allow_list

ข้อยกเว้นของรัฐที่ผิดกฎหมาย

ข้อยกเว้นของรัฐที่ผิดกฎหมายเป็นสัญญาณบ่งชี้ว่ามีการเรียกใช้วิธีการในเวลาที่ผิดกฎหมายหรือไม่เหมาะสม เมื่อสภาพแวดล้อมหรือแอปพลิเคชันไม่อยู่ในสถานะที่เหมาะสมสำหรับการดำเนินการที่ขอ

ข้อยกเว้นของรัฐไม่ถูกต้อง: บริการไม่พร้อมใช้งาน

ข้อผิดพลาด:

com.example.measurement.sampleapp E Failed binding to measurement service: java.lang.IllegalStateException: Service is not available

สาเหตุที่เป็นไปได้:

ต้องปิดใช้สวิตช์ปิด

วิธีแก้

คุณปิดใช้สวิตช์หยุดการทำงานได้ด้วยคำสั่งนี้

adb shell 'device_config put adservices global_kill_switch false'

สาเหตุที่เป็นไปได้:

ยังไม่ได้รับคำยินยอมจากผู้ใช้

วิธีแก้

สิ่งที่เรียกใช้ได้มีดังนี้

adb shell am start -n com.google.android.adservices.api/com.android.adservices.ui.settings.activities.AdServicesSettingsMainActivity

หลังจากคำสั่งก่อนหน้าเสร็จสมบูรณ์แล้ว ให้สลับค่ากำหนด"เปิดใช้ Privacy Sandbox" เป็น "เปิด"

ข้อผิดพลาดเกี่ยวกับคำสั่ง adb

ไม่พบงาน

ข้อผิดพลาด:

Could not find job 14 in package com.google.android.adservices.api/ user 0

สาเหตุที่เป็นไปได้:

ไม่มีการทริกเกอร์ Privacy Sandbox API

แก้ไข: ก่อนเรียกใช้งานนี้ ให้เรียกใช้ Privacy Sandbox API รายการใดรายการหนึ่ง เช่น registerSource(), getTopics() หรือ selectAds() การเรียกใช้นี้คาดว่าจะไม่สำเร็จ แต่คุณจำเป็นต้องเปิดใช้งาน API จากนั้นเรียกใช้คำสั่ง jobscheduler 14 อีกครั้ง

สาเหตุที่เป็นไปได้:

ต้องอัปเดต Google Play Store

วิธีแก้

  1. เข้าสู่ระบบอุปกรณ์หรือโปรแกรมจำลองด้วยบัญชี Google
  2. ไปที่ Google Play Store > ไอคอนโปรไฟล์ > การตั้งค่า > เกี่ยวกับ ใต้หัวข้อเวอร์ชัน Play Store ให้แตะอัปเดต Play Store

ยื่นตั๋ว

หากขั้นตอนเหล่านี้ไม่สามารถแก้ไขข้อผิดพลาดได้ ให้ยื่นตั๋วและระบุข้อมูลต่อไปนี้

  1. คุณใช้รุ่นเวอร์ชันตัวอย่างสำหรับนักพัฒนาซอฟต์แวร์หรือเบต้าอยู่ คุณใช้เวอร์ชันไหน คุณสามารถค้นหารหัสเวอร์ชันได้ที่การตั้งค่า > เกี่ยวกับโทรศัพท์ > หมายเลขบิลด์
  2. หากคุณใช้รุ่นเบต้า ให้เรียกใช้ adb shell getprop | grep build.version.extensions และรวมผลลัพธ์ไว้ในคำขอแจ้งปัญหา
  3. อุปกรณ์ของคุณใช้บริการ Google Play เวอร์ชันใด เรียกใช้ adb shell dumpsys package com.google.android.gms | grep versionName แล้วรวมผลลัพธ์ของคำสั่งนั้นในตั๋ว
  4. ระบุรายงานข้อบกพร่องฉบับเต็ม คุณรับรายงานข้อบกพร่องฉบับเต็มได้โดยเรียกใช้ adb bugreport หรือทำตามวิธีการ