תמיכה בקישורי עומק

החל מגרסה 1.2.0, ‏Navigation 3 תומך בקישורי עומק ליעדים באפליקציה באמצעות המחלקות DeepLinkRequest ו-DeepLinkMatcher.

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

  1. מגדירים מסנני Intent בקובץ AndroidManifest.xml כדי לציין באילו מזהי URI האפליקציה יכולה לטפל.
  2. יוצרים מכונות של DeepLinkMatcher כדי למפות את הבקשות הנכנסות למקשי הניווט.
  3. התאימו את הבקשות הנכנסות ב-method‏ onCreate או onNewIntent של הפעילות, ועדכנו את מקבץ הפעילויות הקודמות בהתאם.

צור DeepLinkRequest

הסמל DeepLinkRequest מייצג קישור עומק נכנס. הוא מכיל DeepLinkUri וRequestExtras אופציונלי עם מידע נוסף, כמו פעולת ה-Intent או סוג ה-MIME.

צריך לספק DeepLinkRequest תוספות

כדי לאחסן מידע נוסף שקשור לקישור העומק, משתמשים בכיתה RequestExtras. כדי להגדיר וליצור מופעים של תוספות בצורה שמונעת שגיאות הקלדה, הספרייה מספקת את הממשק RequestExtrasKey ואת ה-DSL‏ requestExtras.

בנוסף, הספרייה מספקת שני מפתחות נוספים ורכיבי עזר משויכים:

  • ‫MimeTypeExtrasKey: משמש לאחסון סוג MIME‏ String.
  • ‫ActionExtrasKey (ב-Android בלבד): משמש לאחסון String של פעולת Intent.

כדי להגדיר תוספות מותאמות אישית משלכם, צריך להטמיע את הממשק RequestExtrasKey עם גנרי מוקלד:

אפשר גם להשתמש ב-emptyRequestExtras() כדי ליצור מופע ריק, או לשלב תוספות באמצעות האופרטורים + (plus) ו-- (minus).

יצירת DeepLinkRequest מתוך Intent

ב-Android, אפשר ליצור DeepLinkRequest ישירות מ-Intent. כשהוא בנוי בצורה הזו, ה-DeepLinkRequest בנוי כך:

  • הערך של uri מועתק מהשדה data של ה-Intent.
  • אם הערך הוא לא null, סוג ה-MIME והתוספות של הפעולה מוגדרים משדות ה-Intent התואמים.
  • כל הערכים של intent.extras שאינם null נשמרים בתור SavedState ב-DeepLinkRequest.IntentExtrasKey.
  • כל תוספת שסופקה באמצעות הפרמטר extras תתווסף.

DeepLinkMatcher ממפה מופעים נכנסים של DeepLinkRequest למקשי ניווט שאפשר להוסיף למקבץ הפעילויות הקודמות (back stack) של האפליקציה. ב-Navigation 3 יש שלושה מתאמים מובְנים: UriDeepLinkMatcher להתאמת URI שמבוססת על תבניות, StaticKeyDeepLinkMatcher לקישורים בסיסיים ו-BackStackMatcher ליצירת מקבצי פעילויות קודמות סינתטיים. הספרייה תומכת גם בהתאמות בהתאמה אישית לתרחישים לדוגמה שלא נכללים בהתאמות המובנות.

מידע נוסף זמין במאמר יצירת DeepLinkMatchers.

הוספת מסנני Intent

כדי להפעיל קישור עומק שיתחיל את הפעילות, צריך להגדיר את רכיבי ה-<intent-filter> התואמים בקובץ AndroidManifest.xml של האפליקציה. מידע נוסף זמין במאמר הוספת מסנני Intent לקישורים נכנסים.

התאמה לבקשה נכנסת

אחרי שיצרתם את המכונות של DeepLinkMatcher, אתם יכולים להתאים בקשות נכנסות בפעילות שלכם.

כדי להתאים בקשה נכנסת, מבצעים את השלבים הבאים:

  1. יוצרים מופע של המכונות של DeepLinkMatcher.
  2. אוספים את כל המופעים של DeepLinkMatcher, באופן מפורש או באמצעות קישורים מרובים.
  3. יוצרים DeepLinkRequest מה-Intent הנכנס.
  4. התאמה של הבקשה לכל ההתאמות ומציאת ההתאמה הטובה ביותר.
  5. יוצרים את מקבץ הפעילויות הקודמות (back stack) מתוצאת ההתאמה.