יצירת מופעים של DeepLinkMatcher

כדי למפות מופעים נכנסים של DeepLinkRequest למפתחות שאפשר להוסיף למקבץ הפעילויות הקודמות (back stack) של האפליקציה, מגדירים מופעים של DeepLinkMatcher.

‫DeepLinkMatcher היא מחלקה מופשטת שכוללת שתי שיטות, match ו-matchRequest. מחלקות משנה צריכות להטמיע את matchRequest, שמקבל DeepLinkRequest ומחזיר DeepLinkMatcher.MatchResult אם הבקשה תואמת, או null אחרת.

יכול להיות שכמה התאמות יתאימו לבקשה אחת, ולכן MatchResult מטמיע את Comparable כדי לדרג את התוצאות ולבחור את ההתאמה הכי טובה.

פרמטרים של סוגים

המחלקה DeepLinkMatcher מצהירה על שני פרמטרים מסוג גנרי: DeepLinkMatcher<T : Any, R : DeepLinkMatcher.MatchResult<T>>.

  • ‫T : Any: סוג מפתח הניווט של היעד (למשל UserProfileKey או NavKey) שמוחזר כשיש התאמה לקישור העומק.
  • ‫R : DeepLinkMatcher.MatchResult<T>: סוג המשנה הספציפי של MatchResult שמוחזר על ידי matchRequest ו-match.

הפרמטר מהסוג השני, R, שומר על מידע מיוחד לגבי ההתאמה בלי לדרוש המרה לא מבוקרת לסוג נתונים ספציפי יותר:

בקשות לסינון מקדים

הטמעות של DeepLinkMatcher יכולות לציין רשימה של מופעי DeepLinkMatcher.Filter כדי לסנן בקשות לפני שהן נבדקות.

הספרייה כוללת פונקציות עזר ליצירת מסננים נפוצים:

הגישה הזו מאפשרת לכם להשתמש שוב באותה תבנית URI לפעולות שונות, כמו צפייה לעומת עריכה:

מכיוון ש-Filter הוא ממשק פונקציונלי (SAM), אפשר גם ליצור מסננים באמצעות ביטויי lambda:

שימוש בהתאמות שסופקו

הספרייה כוללת שלוש הטמעות סטנדרטיות של DeepLinkMatcher: StaticKeyDeepLinkMatcher,‏ UriDeepLinkMatcher ו-BackStackMatcher. אם ההתאמות האלה לא עומדות בדרישות של האפליקציה, אתם יכולים ליצור התאמות בהתאמה אישית לקישורי עומק.

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

לדוגמה, כדי לטפל ב-Intent של ACTION_APPLICATION_PREFERENCES:

כדי להתאים בין מזהי URI היררכיים לתבניות ולחלץ ארגומנטים, משתמשים ב-UriDeepLinkMatcher. לדוגמה, אפשר להתאים את www.example.com/users/{id} כדי לחלץ את הארגומנט id למפתח יעד. מידע נוסף זמין במאמר התאמת קישורי עומק של URI.

יצירת מקבץ פעילויות קודמות (back stack) סינתטי

כדי להגדיר איך ליצור מקבץ פעילויות קודמות (back stack) סינתטי מהתאמה מוצלחת, משתמשים ב-BackStackMatcher. במקום ליצור מופע של BackStackMatcher באופן ישיר, צריך להפעיל את פונקציית התוסף withBackStack ב-DeepLinkMatcher אחר. ‫withBackStack עוטף את המקלט ב-BackStackMatcher שמחזיר BackStackMatchResult שמכיל מקבץ פעילויות קודמות (back stack) סינתטי List. מכיוון ש-BackStackMatchResult מעביר את ההשוואה לתוצאת ההתאמה הבסיסית, עטיפת התאמה ב-withBackStack שומרת על דירוג ההתאמה המקורי שלה.

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