راهنمای عیب یابی Privacy Sandbox برای اندروید

این سند نحوه حل مشکلات رایج را هنگام تنظیم 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

ورود به سیستم تبلیغاتی را فعال کنید

ثبت نام کامل از خدمات تبلیغاتی زمینه بیشتری را برای خطاهایی که مشاهده می کنید فراهم می کند. برای فعال کردن از این دستور استفاده کنید:

adb shell setprop log.tag.adservices VERBOSE

مطمئن شوید که دستگاه شما به درستی پیکربندی شده است

اگر به‌تازگی به‌روزرسانی‌های پیکربندی دستگاه خود را غیرفعال کرده‌اید، توصیه می‌کنیم این مراحل را دوباره اجرا کنید تا مطمئن شوید که دستگاه شما به درستی پیکربندی شده است و در طول مدت آزمایش به همین شکل باقی می‌ماند.

  • PPAPI ها را با دستورات adb قابل اجرا فعال کنید.
  • بسته به اهداف خود، دستگاه خود را ثبت کنید یا ثبت نام را غیرفعال کنید.

کد را بررسی کنید تا مطمئن شوید PPAPI ها در دسترس هستند

می‌توانید چک‌هایی را به پایگاه کد خود اضافه کنید تا مطمئن شوید که دستگاه شما نسخه‌های صحیحی را که برای جعبه ایمنی حریم خصوصی نیاز دارد، دارد.

اگر از نسخه بتا از طریق برنامه‌های افزودنی SDK استفاده می‌کنید، نسخه صحیح ساخت و افزونه SDK را بررسی کنید:

اگر از نسخه بتا از طریق کتابخانه‌های Jetpack استفاده می‌کنید، اگر جعبه ایمنی حریم خصوصی در دستگاه شما در دسترس نباشد، عملکرد مقداردهی اولیه null می‌شود. مثلا:

برای هر نسخه، خدمات Google Play را بررسی کنید:

استثنائات امنیتی

خطاهای استثنای امنیتی معمولاً زمانی ایجاد می‌شوند که چیزی فاقد مجوز برای دسترسی به منبع 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 ثبت شده مطابقت داشته باشد. برای مثال، می‌توانید خط را در برنامه نمونه تنظیم کنید تا به جای «/source» «/register_source» را به URL اضافه کنید.

اگر همچنان این خطا را مشاهده کردید :

ممکن است شرکت شما در لیست ثبت نام نباشد، یا شرکت ثبت نام کرده باشد اما در لیست مجاز مانیفست برنامه نباشد. با تماس با android-ps-support@google.com، مطمئن شوید که سازمان شما در Privacy Sandbox ثبت نام کرده است.

تماس گیرنده مجاز نیست

خطا :

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 استفاده می کنید :

دستورات لیست شده قبلی برای bash و سایر پوسته ها کار می کنند، اما اگر پوسته adb را مستقیماً راه اندازی کنید و دستورات را اجرا کنید، قرار نیست از نقل قول ها فرار کنید. در عوض، دستورات را به صورت زیر اجرا کنید:

ثابت :

نام بسته خود را به لیست مجاز اضافه کنید:

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

دلیل احتمالی :

کلید kill باید غیرفعال باشد.

ثابت :

با این دستور می توانید سوئیچ kill را غیرفعال کنید:

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

پس از تکمیل دستور قبلی، تنظیمات برگزیده "Enable Privacy Sandbox" را روی "روشن" تغییر دهید.

خطا در دستورات adb

کار پیدا نکرد

خطا :

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

دلیل احتمالی :

API های Privacy Sandbox راه اندازی نشده اند.

رفع : قبل از اجرای این کار، با یکی از APIهای Privacy Sandbox، مانند registerSource() ، getTopics() یا selectAds() تماس بگیرید. انتظار می رود این تماس با شکست مواجه شود، اما برای فعال کردن API لازم است. سپس دستور jobscheduler 14 را دوباره اجرا کنید.

دلیل احتمالی :

نیاز به به روز رسانی فروشگاه Google Play.

ثابت :

  1. با حساب Google خود وارد دستگاه یا شبیه ساز خود شوید.
  2. به فروشگاه Google Play > نماد نمایه > تنظیمات > درباره بروید. در زیر عنوان نسخه Play Store ، روی Update Play Store ضربه بزنید.

یک بلیط ثبت کنید

اگر این مراحل خطای شما را برطرف نکرد، یک تیکت ارسال کنید و اطلاعات زیر را در آن قرار دهید:

  1. از کدام نسخه استفاده می کنید، پیش نمایش برنامه نویس یا بتا؟ شما در چه نسخه ای هستید؟ می توانید کد نسخه خود را در تنظیمات > درباره تلفن > شماره ساخت پیدا کنید.
  2. اگر از نسخه بتا استفاده می کنید، adb shell getprop | grep build.version.extensions اجرا کنید adb shell getprop | grep build.version.extensions و نتایج را در بلیط خود قرار دهید.
  3. دستگاه شما چه نسخه ای از سرویس های Google Play را دارد؟ adb shell dumpsys package com.google.android.gms | grep versionName اجرا کنید adb shell dumpsys package com.google.android.gms | grep versionName و نتایج آن دستور را در تیکت خود قرار دهید.
  4. شامل یک گزارش کامل باگ شما می توانید با اجرای adb bugreport یا با دنبال کردن دستورالعمل ها، یک گزارش کامل باگ دریافت کنید.
،

این سند نحوه حل مشکلات رایج را هنگام تنظیم 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

ورود به سیستم تبلیغاتی را فعال کنید

ثبت نام کامل از خدمات تبلیغاتی زمینه بیشتری را برای خطاهایی که مشاهده می کنید فراهم می کند. برای فعال کردن از این دستور استفاده کنید:

adb shell setprop log.tag.adservices VERBOSE

مطمئن شوید که دستگاه شما به درستی پیکربندی شده است

اگر به‌تازگی به‌روزرسانی‌های پیکربندی دستگاه خود را غیرفعال کرده‌اید، توصیه می‌کنیم این مراحل را دوباره اجرا کنید تا مطمئن شوید که دستگاه شما به درستی پیکربندی شده است و در طول مدت آزمایش به همین شکل باقی می‌ماند.

  • PPAPI ها را با دستورات adb قابل اجرا فعال کنید.
  • بسته به اهداف خود، دستگاه خود را ثبت کنید یا ثبت نام را غیرفعال کنید.

کد را بررسی کنید تا مطمئن شوید PPAPI ها در دسترس هستند

می‌توانید چک‌هایی را به پایگاه کد خود اضافه کنید تا مطمئن شوید که دستگاه شما نسخه‌های صحیحی را که برای جعبه ایمنی حریم خصوصی نیاز دارد، دارد.

اگر از نسخه بتا از طریق برنامه‌های افزودنی SDK استفاده می‌کنید، نسخه صحیح ساخت و افزونه SDK را بررسی کنید:

اگر از نسخه بتا از طریق کتابخانه‌های Jetpack استفاده می‌کنید، اگر جعبه ایمنی حریم خصوصی در دستگاه شما در دسترس نباشد، عملکرد مقداردهی اولیه null می‌شود. مثلا:

برای هر نسخه، خدمات Google Play را بررسی کنید:

استثنائات امنیتی

خطاهای استثنای امنیتی معمولاً زمانی ایجاد می‌شوند که چیزی فاقد مجوز برای دسترسی به منبع 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 ثبت شده مطابقت داشته باشد. برای مثال، می‌توانید خط را در برنامه نمونه تنظیم کنید تا به جای «/source» «/register_source» را به URL اضافه کنید.

اگر همچنان این خطا را مشاهده کردید :

ممکن است شرکت شما در لیست ثبت نام نباشد، یا شرکت ثبت نام کرده باشد اما در لیست مجاز مانیفست برنامه نباشد. با تماس با android-ps-support@google.com، مطمئن شوید که سازمان شما در Privacy Sandbox ثبت نام کرده است.

تماس گیرنده مجاز نیست

خطا :

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 استفاده می کنید :

دستورات لیست شده قبلی برای bash و سایر پوسته ها کار می کنند، اما اگر پوسته adb را مستقیماً راه اندازی کنید و دستورات را اجرا کنید، قرار نیست از نقل قول ها فرار کنید. در عوض، دستورات را به صورت زیر اجرا کنید:

ثابت :

نام بسته خود را به لیست مجاز اضافه کنید:

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

دلیل احتمالی :

کلید kill باید غیرفعال باشد.

ثابت :

با این دستور می توانید سوئیچ kill را غیرفعال کنید:

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

پس از تکمیل دستور قبلی، تنظیمات برگزیده "Enable Privacy Sandbox" را روی "روشن" تغییر دهید.

خطا در دستورات adb

کار پیدا نکرد

خطا :

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

دلیل احتمالی :

API های Privacy Sandbox راه اندازی نشده اند.

رفع : قبل از اجرای این کار، با یکی از APIهای Privacy Sandbox، مانند registerSource() ، getTopics() یا selectAds() تماس بگیرید. انتظار می رود این تماس با شکست مواجه شود، اما برای فعال کردن API لازم است. سپس دستور jobscheduler 14 را دوباره اجرا کنید.

دلیل احتمالی :

نیاز به به روز رسانی فروشگاه Google Play.

ثابت :

  1. با حساب Google خود وارد دستگاه یا شبیه ساز خود شوید.
  2. به فروشگاه Google Play > نماد نمایه > تنظیمات > درباره بروید. در زیر عنوان نسخه Play Store ، روی Update Play Store ضربه بزنید.

یک بلیط ثبت کنید

اگر این مراحل خطای شما را برطرف نکرد، یک تیکت ارسال کنید و اطلاعات زیر را در آن قرار دهید:

  1. از کدام نسخه استفاده می کنید، پیش نمایش برنامه نویس یا بتا؟ شما در چه نسخه ای هستید؟ می توانید کد نسخه خود را در تنظیمات > درباره تلفن > شماره ساخت پیدا کنید.
  2. اگر از نسخه بتا استفاده می کنید، adb shell getprop | grep build.version.extensions اجرا کنید adb shell getprop | grep build.version.extensions و نتایج را در بلیط خود قرار دهید.
  3. دستگاه شما چه نسخه ای از سرویس های Google Play را دارد؟ adb shell dumpsys package com.google.android.gms | grep versionName اجرا کنید adb shell dumpsys package com.google.android.gms | grep versionName و نتایج آن دستور را در تیکت خود قرار دهید.
  4. شامل یک گزارش کامل باگ شما می توانید با اجرای adb bugreport یا با دنبال کردن دستورالعمل ها، یک گزارش کامل باگ دریافت کنید.