כשמטמיעים את התכונה 'קישור לאפליקציה', צריך לבדוק את פונקציית הקישור כדי לוודא שהמערכת יכולה לשייך את האפליקציה לאתרים שלכם ולטפל בבקשות לכתובות URL כמו שציפיתם.
כדי לבדוק קובץ הצהרה קיים, אפשר להשתמש בכלי ליצירה ולבדיקה של רשימת הצהרות.
בקטעים הבאים מוסבר איך לבדוק את האימות של קישורי האפליקציה באופן ידני. אם אתם מעדיפים, אתם יכולים לבדוק את האימות באמצעות הכלי 'קישורי עומק ב-Play' או באמצעות App Links Assistant ב-Android Studio.
אישור רשימת המארחים לאימות
במהלך הבדיקה, צריך לוודא את רשימת המארחים המשויכים שהמערכת צריכה לאמת עבור האפליקציה. יוצרים רשימה של כל כתובות ה-URL שמסנני הכוונות התואמים שלהן כוללים את המאפיינים והרכיבים הבאים:
- מאפיין
android:scheme
עם הערךhttp
אוhttps
- מאפיין
android:host
עם תבנית של כתובת URL של דומיין - רכיב פעולה
android.intent.action.VIEW
- רכיב קטגוריה:
android.intent.category.BROWSABLE
אפשר להשתמש ברשימה הזו כדי לוודא שקובץ JSON עם Digital Asset Links מסופק בכל מארח ותת-דומיין שצוינו.
אישור קובצי Digital Asset Links
לכל אתר, משתמשים ב-Digital Asset Links API כדי לוודא שקובץ ה-JSON של Digital Asset Links מאוחסן ומוגדר בצורה תקינה:
https://digitalassetlinks.googleapis.com/v1/statements:list?
source.web.site=https://<var>domain.name</var>:<var>optional_port</var>&
relation=delegate_permission/common.handle_all_urls
במקרה של קישורים דינמיים לאפליקציות, אפשר גם לבדוק את תוספי הקשר.
https://digitalassetlinks.googleapis.com/v1/statements:list?source.web.site=https://www.example.com&relation=delegate_permission/common.handle_all_urls&return_relation_extensions=true
בדיקת מדיניות הקישורים
במסגרת תהליך הבדיקה, אתם יכולים לבדוק את הגדרות המערכת הנוכחיות לטיפול בקישורים. כדי לקבל רשימה של מדיניות קיימת לטיפול בקישורים לכל האפליקציות במכשיר המחובר, משתמשים בפקודה הבאה:
adb shell dumpsys package domain-preferred-apps
הפקודה הבאה עושה את אותו הדבר:
adb shell dumpsys package d
הפקודה מחזירה רשימה של כל משתמש או פרופיל שמוגדרים במכשיר, לפני הרשימה מופיעה כותרת בפורמט הבא:
App linkages for user 0:
אחרי הכותרת הזו, הפלט מציג את ההגדרות לטיפול בקישורים של המשתמש בפורמט הבא:
Package: com.android.vending
Domains: play.google.com market.android.com
Status: always : 200000002
בדף האפליקציה הזה מצוין אילו אפליקציות משויכות לאילו דומיינים עבור המשתמש:
-
Package
– מזהה אפליקציה לפי שם החבילה שלה, כפי שמוצה במניפסט שלה. -
Domains
– מציג את הרשימה המלאה של המארחים שהאפליקציה הזו מטפלת בקישורי האינטרנט שלהם, עם רווחים כמפרידים. -
Status
– מציג את ההגדרה הנוכחית של הטיפול בקישורים באפליקציה הזו. אם האפליקציה עברה אימות ובקובץ המניפסט שלה מופיעandroid:autoVerify="true"
, הסטטוס שיוצג הואalways
. המספר ההקסהדצימלי אחרי הסטטוס הזה קשור לרישום של מערכת Android של העדפות המשתמש לגבי קישור האפליקציה. הערך הזה לא מציין אם האימות הצליח.
דוגמה לבדיקה
כדי שהאימות של הקישור לאפליקציה יצליח, המערכת צריכה לאמת את האפליקציה בכל אחד מהאתרים שציינתם במסנן כוונות נתון שעומד בקריטריונים של קישורים לאפליקציות. בדוגמה הבאה מוצגת הגדרת מניפסט עם כמה קישורים לאפליקציה:
<activity android:name=”MainActivity”>
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="https" />
<data android:scheme="https" />
<data android:host="www.example.com" />
<data android:host="mobile.example.com" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="https" />
<data android:host="www.example2.com" />
</intent-filter>
</activity>
<activity android:name=”SecondActivity”>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="https" />
<data android:host="account.example.com" />
</intent-filter>
</activity>
<activity android:name=”ThirdActivity”>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="https" />
<data android:host="map.example.com" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="market" />
<data android:host="example.com" />
</intent-filter>
</activity>
</application>
רשימת המארחים שהפלטפורמה תנסה לאמת מהמניפסט הקודם היא:
www.example.com
mobile.example.com
www.example2.com
account.example.com
רשימת המארחים שהפלטפורמה לא תנסה לאמת מהמניפסט הקודם היא:
map.example.com (it does not have android.intent.category.BROWSABLE)
market://example.com (it does not have either an "http" or "https" scheme)
מידע נוסף על רשימות תמצית מידע זמין במאמר יצירת רשימת תמצית מידע