เอกสารนี้จะอธิบายวิธีแก้ปัญหาทั่วไปเมื่อตั้งค่า 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 การลงทะเบียนไม่ตรงกัน
วิธีแก้
- ดูข้อมูลการลงทะเบียนเพื่อดูว่ามีความแตกต่างระหว่าง URL ที่ใช้ในโค้ดและ URL ที่คุณลงทะเบียนกับ Privacy Sandbox หรือไม่ ตัวอย่างเช่น คุณอาจใช้
https://adtech.example.com/source
แต่ URL ที่จดทะเบียนคือhttps://adtech.example.com/register_source
- ปรับเปลี่ยนโค้ดของคุณให้ตรงกับ 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
วิธีแก้
- เข้าสู่ระบบอุปกรณ์หรือโปรแกรมจำลองด้วยบัญชี Google
- ไปที่ Google Play Store > ไอคอนโปรไฟล์ > การตั้งค่า > เกี่ยวกับ ใต้หัวข้อเวอร์ชัน Play Store ให้แตะอัปเดต Play Store
ยื่นตั๋ว
หากขั้นตอนเหล่านี้ไม่สามารถแก้ไขข้อผิดพลาดได้ ให้ยื่นตั๋วและระบุข้อมูลต่อไปนี้
- คุณใช้รุ่นเวอร์ชันตัวอย่างสำหรับนักพัฒนาซอฟต์แวร์หรือเบต้าอยู่ คุณใช้เวอร์ชันไหน คุณสามารถค้นหารหัสเวอร์ชันได้ที่การตั้งค่า > เกี่ยวกับโทรศัพท์ > หมายเลขบิลด์
- หากคุณใช้รุ่นเบต้า ให้เรียกใช้
adb shell getprop | grep build.version.extensions
และรวมผลลัพธ์ไว้ในคำขอแจ้งปัญหา - อุปกรณ์ของคุณใช้บริการ Google Play เวอร์ชันใด เรียกใช้
adb shell dumpsys package com.google.android.gms | grep versionName
แล้วรวมผลลัพธ์ของคำสั่งนั้นในตั๋ว - ระบุรายงานข้อบกพร่องฉบับเต็ม คุณรับรายงานข้อบกพร่องฉบับเต็มได้โดยเรียกใช้
adb bugreport
หรือทำตามวิธีการ