פתרון בעיות בקישורי עומק לאפליקציות

במדריך הזה מתוארות בעיות נפוצות ומוסבר איך לפתור אותן. אפשר גם להשתמש בכלים לפתרון בעיות בדף "קישורי עומק" ב-Play Console או ב-App Links Assistant ב-Android Studio. מידע נוסף זמין במאמר כלים למפתחים של קישורי עומק לאפליקציות.

  • הבעיה: לוחצים על קישור שאמור לפתוח את האפליקציה, אבל הוא נפתח בדפדפן אינטרנט או שמוצגת תיבת דו-שיח להפגת עמימות.
  • הפתרון:
    • בדקו את הקובץ assetlinks.json: ודאו שהקובץ הוא קובץ JSON חוקי, שנגיש בנתיב https://<your-domain>/.well-known/assetlinks.json, ומוצג דרך חיבור HTTPS ללא הפניות אוטומטיות. משתמשים בכלי אימות אונליין.
    • בדקו את טביעת האצבע מסוג SHA-256: ודאו שהמאפיין sha256_cert_fingerprints בקובץ assetlinks.json תואם בדיוק לטביעת האצבע של מפתח החתימה של גרסת האפליקציה (אם אתם משתמשים בחתימת אפליקציה ב-Play, השתמשו בטביעת האצבע מ-Play Console). החתימה צריכה להיות באותיות רישיות.
    • בדקו את המאפיין autoVerify: ודאו שהמסנן <intent-filter> בקובץ AndroidManifest.xml כולל את המאפיין android:autoVerify="true".
    • בודקים אם יש הפניות אוטומטיות בצד השרת: הפניות אוטומטיות מ-http אל https או מדומיין ללא www אל www יכולות לגרום לאימות להיכשל.
    • אלצו אימות מחדש: הריצו את פקודות ה-ADB במדריך בדיקת קישורי העומק לאפליקציה כדי לקבל תוצאת אימות עדכנית.
    • אבחון של פתרון הקישורים (Android בגרסה 17 ואילך): מריצים את הפקודה adb shell am start --debug-link -a android.intent.action.VIEW -d "<URL>" כדי לבדוק אילו אפליקציות מועמדות, מסנני Intent של מניפסט וכללים של קישורי עומק דינמיים לאפליקציה תואמים לכתובת ה-URL. פרטים נוספים זמינים במאמר אבחון של פתרון קישורים באמצעות הדגל debug-link.

הכללים הדינמיים לא מתעדכנים במכשירי Android מגרסה 15 ואילך

  • הבעיה: עדכנתם את הכללים בקובץ assetlinks.json, אבל האפליקציה לא מטפלת בקישורים החדשים.
  • הפתרון:
    • אלצו אימות מחדש: הדרך המהימנה ביותר לבדוק שינויים היא לאלץ משיכת נתונים מחדש באמצעות הפקודה adb shell pm verify-app-links --re-verify <your-package-name>.
    • בדקו אם יש שגיאות הקלדה: עברו היטב על התאמות התבניות בכללים כדי לוודא שאין שגיאות תחביר.
    • בודקים את כללי הסינון של המניפסט: בודקים את כללי הסינון של ה-Intent בקובץ המניפסט של האפליקציה כדי לוודא שנתיב הקישור לא מסונן. אם הקישור מסונן, צריך להגדיר את מסנן ה-Intent בקובץ המניפסט של האפליקציה כך שיהיה פחות מגביל.
    • אבחון כללי התאמה (Android 17 ואילך): מריצים את הפקודה adb shell am start --debug-link -a android.intent.action.VIEW -d "<URL>" כדי לבדוק אילו כללים נבדקו ולקבוע אם כלל החרגה (allow = 1) מנע את פתיחת האפליקציה. אבחון של פתרון הקישור באמצעות הדגל debug-link

איך מתקנים שגיאות הטמעה נפוצות

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

הגדרה שגויה של מסנן Intent
בדקו אם כללתם כתובת URL שהאפליקציה שלכם לא הבעלים שלה ברכיב <intent-filter>.
הגדרת שרת שגויה

בודקים את הגדרות ה-JSON של השרת ומוודאים שערך ה-SHA נכון.

בנוסף, צריך לוודא שהדומיין example.com. (עם הנקודה בסוף) מציג את אותו תוכן כמו הדומיין example.com.

הפניות אוטומטיות בצד השרת

המערכת לא מאמתת אף קישור עומק לאפליקציה ל-Android אם מגדירים הפניה אוטומטית כמו זו:

  • http://example.com עד https://example.com
  • example.com עד www.example.com

ההתנהגות הזו מגינה על האבטחה של האפליקציה.

עמידות השרת

בודקים אם אפליקציות הלקוח יכולות להתחבר לשרת.

קישורים שלא ניתן לאמת

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

חתימה שגויה בקובץ assetlinks.json

מוודאים שהחתימה נכונה וזהה לחתימה שמשמשת לחתימה על האפליקציה. טעויות נפוצות כוללות:

  • חתימה על האפליקציה באמצעות אישור לניפוי באגים, כשרק החתימה על הגרסה נמצאת ב-assetlinks.json.
  • חתימה באותיות קטנות ב-assetlinks.json. החתימה צריכה להיות באותיות רישיות.
  • אם אתם משתמשים בחתימת אפליקציה ב-Play, ודאו שאתם משתמשים בחתימה שבה Google משתמשת כדי לחתום על כל אחת מהגרסאות שלכם. כדי לאמת את הפרטים האלה, כולל קטע קוד JSON מלא, פועלים לפי ההוראות בנושא הצהרה על שיוך לאתר.

איך יוצרים דוח על באג

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