מדריך לפתרון בעיות בארגז החול לפרטיות ב-Android

במאמר הזה נסביר איך לפתור בעיות נפוצות כשמגדירים את ארגז החול לפרטיות ב-Android. אם נתקלתם בשגיאה שלא נמצאה במדריך, דווחו לנו על כך.

לחלק מהשגיאות יש כמה סיבות אפשריות לכך. בהמשך מפורטות כמה מהשגיאות הנפוצות והתיקונים שלהן, אבל יכול להיות שתיתקלו באותה הודעת שגיאה מסיבה אחרת.

לפני שמתחילים בפתרון הבעיה

השבתת עדכוני הגדרות המכשיר

לפני פתרון בעיות שנתקלתם בהן בבדיקה של ארגז החול לפרטיות, השלב הראשון הוא להשבית את העדכונים של הגדרות המכשיר. כך אפשר לוודא שהמכשיר לא יאחזר הגדרות מעודכנות מהשרת, וישבת בטעות את ארגז החול לפרטיות במכשיר הבדיקה.

משביתים את עדכוני תצורת המכשיר באמצעות הפקודה הזו:

adb shell device_config set_sync_disabled_for_tests persistent

אם תרצו להפעיל מחדש את עדכוני תצורת המכשיר לאחר הבדיקה, תוכלו לעשות זאת באמצעות הפקודה הבאה:

adb shell device_config set_sync_disabled_for_tests none

הפעלת רישום מפורט (verbose) ביומן של שירותי מודעות

הרישום המפורט ביומן של שירותי הפרסום מספק הקשר נוסף לגבי השגיאות שאתם רואים. כדי להפעיל, משתמשים בפקודה הבאה:

adb shell setprop log.tag.adservices VERBOSE

כיצד לוודא שהמכשיר הוגדר כראוי

אם השבתתם לאחרונה את העדכונים להגדרות המכשיר, מומלץ להריץ שוב את השלבים האלה כדי לוודא שהמכשיר מוגדר כמו שצריך וממשיך לפעול באופן הזה במהלך הבדיקה.

  • מפעילים את ממשקי ה-PPAPI עם פקודות adb הרלוונטיות.
  • צריך לרשום את המכשיר או להשבית את ההרשמה, בהתאם ליעדים.

צריך לבדוק את הקוד כדי לוודא שממשקי ה-PPAPI זמינים

אתם יכולים להוסיף בדיקות ל-codebase כדי לוודא שבמכשיר שלכם מותקנות הגרסאות המתאימות לארגז החול לפרטיות.

אם אתם משתמשים בגרסת בטא דרך תוספי SDK, כדאי לבדוק את ה-build ואת הגרסה הנכונה של תוסף ה-SDK:

אם משתמשים בגרסת בטא דרך ספריות Jetpack, פונקציית האתחול תחזיר את הערך null אם ארגז החול לפרטיות לא זמין במכשיר. לדוגמה:

אם מופיעה גרסה כזו, מחפשים את Google Play Services:

חריגי אבטחה

שגיאות של חריגות אבטחה בדרך כלל מופיעות כשאין הרשאה לגשת למשאב של ארגז החול לפרטיות.

לא נשלחה בקשה להרשאה

שגיאה:

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' במקום '/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:

הפקודות שצוינו למעלה פועלות ב-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

סיבה אפשרית:

ממשקי ה-API של ארגז החול לפרטיות לא הופעלו.

התיקון: לפני שמפעילים את המשימה הזו, צריך להפעיל את אחד מממשקי ה-API של ארגז החול לפרטיות, למשל registerSource(), getTopics() או selectAds(). הקריאה הזו צפויה להיכשל, אבל צריך להפעיל את ה-API. לאחר מכן, מריצים מחדש את הפקודה jobscheduler 14.

סיבה אפשרית:

צריך לעדכן את חנות Google Play.

התיקון:

  1. מתחברים למכשיר או לאמולטור באמצעות חשבון Google.
  2. עוברים אל חנות Google Play > סמל הפרופיל > הגדרות > מידע כללי. מתחת לכותרת גרסת חנות Play, מקישים על עדכון חנות Play.

הגשת פנייה

אם הפעולות האלה לא פותרות את השגיאה, תוכלו להגיש פנייה ולכלול את הפרטים הבאים:

  1. באיזו גרסה אתם משתמשים: תצוגה מקדימה למפתחים או בטא? באיזו גרסה אתם משתמשים? ניתן למצוא את קוד הגרסה בהגדרות > מידע על הטלפון > מספר Build.
  2. אם משתמשים בגרסת בטא, מריצים את adb shell getprop | grep build.version.extensions וכוללים את התוצאות בכרטיס.
  3. איזו גרסה של Google Play Services מותקנת במכשיר? מריצים את הפקודה adb shell dumpsys package com.google.android.gms | grep versionName וכוללים את התוצאות של הפקודה בכרטיס.
  4. יש לצרף דוח מלא על באג. כדי לקבל דוח מלא על באג, אפשר להריץ adb bugreport או לפעול לפי ההוראות.