เอกสารนี้อธิบายวิธีแก้ปัญหาที่พบได้ทั่วไปเมื่อตั้งค่าความเป็นส่วนตัว 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 ที่ลงทะเบียนไว้กับนโยบายความเป็นส่วนตัว
แซนด์บ็อกซ์ ตัวอย่างเช่น คุณอาจใช้
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 เชลล์โดยตรงและลองเรียกใช้คำสั่ง คุณไม่ควร Escape คำกล่าว แต่ให้เรียกใช้คำสั่งดังนี้
วิธีแก้
เพิ่มชื่อแพ็กเกจลงในรายการที่อนุญาตโดยทำดังนี้
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
หรือโดย ทำตามวิธีการ