دليل تحديد المشاكل وحلّها في "مبادرة حماية الخصوصية" على نظام التشغيل Android

يوضِّح هذا المستند كيفية حلّ المشاكل الشائعة عند إعداد "مبادرة حماية الخصوصية" على Android. إذا رأيت خطأً لم يتم العثور عليه في هذا الدليل، يُرجى إعلامنا.

قد تؤدي بعض الأخطاء إلى عدّة أسباب محتملة لظهورها. في ما يلي بعض الأخطاء الأكثر شيوعًا وحلولها، ولكن من الممكن أن تظهر رسالة الخطأ نفسها لسبب مختلف.

قبل تحديد المشاكل وحلّها

إيقاف تحديثات إعدادات الجهاز

عند تحديد المشاكل وحلّها في ما يتعلّق باختبار "مبادرة حماية الخصوصية"، يجب أولاً إيقاف تحديثات إعدادات جهازك. يضمن ذلك أنّ جهازك لا يجلب الإعدادات المعدّلة من الخادم ولا يوقف "مبادرة حماية الخصوصية" بدون قصد على جهاز الاختبار.

أوقِف تحديثات إعدادات الجهاز باستخدام الأمر التالي:

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

التأكّد من ضبط جهازك بشكل صحيح

في حال إيقاف تحديثات إعدادات جهازك للتو، ننصحك بإعادة تنفيذ هذه الخطوات مرة أخرى للتأكّد من ضبط جهازك بشكل صحيح واستمراره على هذا النحو طوال مدة الاختبار.

  • تفعيل PPAPIs باستخدام أوامر adb القابلة للتطبيق.
  • يمكنك تسجيل جهازك أو إيقاف عملية التسجيل بناءً على أهدافك.

تحقَّق من الرمز للتأكد من توفُّر PPAPIs.

يمكنك إضافة عمليات تحقّق إلى قاعدة الرموز للتأكّد من أنّ جهازك يتضمّن الإصدارات الصحيحة التي يحتاجها لـ "مبادرة حماية الخصوصية".

إذا كنت تستخدم إصدارًا تجريبيًا من خلال إضافات حزمة تطوير البرامج (SDK)، يُرجى البحث عن الإصدار الصحيح لإضافة الإصدار وحزمة تطوير البرامج (SDK):

إذا كنت تستخدم إصدارًا تجريبيًا عبر Jetpack Libraries، ستعرض دالة الإعداد null في حال عدم توفّر "مبادرة حماية الخصوصية" على جهازك. مثال:

بالنسبة إلى أي إصدار، تحقَّق من "خدمات Google Play":

استثناءات الأمان

تظهر أخطاء استثناء الأمان عادةً عندما يفتقر شيء ما إلى إذن الوصول إلى مورد "مبادرة حماية الخصوصية".

لم يتم طلب الإذن

الخطأ:

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".

إذا استمر ظهور هذا الخطأ:

قد لا تكون شركتك ضمن قائمة التسجيلات أو قد تكون الشركة مسجَّلة ولكنها ليست ضمن القائمة المسموح بها لبيان التطبيق. تأكَّد من تسجيل مؤسستك في "مبادرة حماية الخصوصية" من خلال التواصل مع 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 وغيرها من وحدات الواجهة، ولكن إذا بدأت تشغيل أمر 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

السبب المحتمل:

يجب إيقاف مفتاح الإغلاق.

الحل:

يمكنك إيقاف مفتاح الإغلاق باستخدام الأمر التالي:

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

بعد اكتمال الأمر السابق، عليك تبديل الخيار "تفعيل مبادرة حماية الخصوصية" إلى "تفعيل".

أخطاء في أوامر adb

تعذّر العثور على الوظيفة.

الخطأ:

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

السبب المحتمل:

لم يتم تشغيل واجهات برمجة تطبيقات "مبادرة حماية الخصوصية".

الحل: قبل تنفيذ هذه المهمة، يمكنك الاتصال بإحدى واجهات برمجة تطبيقات "مبادرة حماية الخصوصية"، مثل registerSource() أو getTopics() أو selectAds(). من المتوقع أن تفشل عملية الاستدعاء هذه، ولكنها مطلوبة لتفعيل واجهة برمجة التطبيقات. بعد ذلك، أعِد تنفيذ الأمر jobscheduler 14.

السبب المحتمل:

يجب تحديث "متجر Google Play".

الحل:

  1. سجِّل الدخول إلى جهازك أو المحاكي باستخدام حسابك على Google.
  2. انتقِل إلى متجر Google Play > رمز الملف الشخصي > الإعدادات > لمحة. ضمن عنوان إصدار "متجر Play"، انقر على تحديث "متجر Play".

تقديم طلب دعم

إذا لم تنجح هذه الخطوات في حلّ الخطأ، يمكنك تقديم طلب دعم وتضمين المعلومات التالية:

  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، أو من خلال اتّباع التعليمات.