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

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

วิธีแก้

  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 หรือโดย ทำตามวิธีการ