כשמטמיעים את התכונה 'קישור לאפליקציה', צריך לבדוק את פונקציית הקישור כדי לוודא שהמערכת יכולה לשייך את האפליקציה לאתרים שלכם ולטפל בבקשות לכתובות 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)
מידע נוסף על רשימות תמצית מידע זמין במאמר יצירת רשימת תמצית מידע