יצירת מחלקות DeepLinkMatcher מותאמות אישית

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

כשמרחיבים את DeepLinkMatcher<T, R>, צריך לציין שני ארגומנטים של טיפוסים: הטיפוס של מפתח הניווט ליעד (T : Any) והטיפוס של תוצאת ההתאמה (R : DeepLinkMatcher.MatchResult<T>). אם ההתאמה לא צריכה דירוג תוצאות מותאם אישית או מטא-נתונים נוספים, משתמשים ב-DeepLinkMatcher.MatchResult<T> כארגומנט השני של הטיפוס.

לדוגמה, הנה הטמעה בסיסית של TelDeepLinkMatcher שתומכת ב-URI מסוג tel (כמו tel:5550100). מכיוון ש-URI מסוג tel הם אטומים, UriDeepLinkMatcher לא תומך בהם:

דירוג של כיתות בהתאמה אישית MatchResult

אם יש דרך משמעותית להשוות בין תוצאות ההתאמה מהכלי להתאמה אישית, צריך להרחיב את DeepLinkMatcher.MatchResult ולשנות את השיטה compareTo כדי לדרג את התוצאות.

כשיוצרים מחלקת משנה מותאמת אישית MatchResult, צריך לעדכן את הצהרת המחלקה של ההתאמה כדי לציין את מחלקת המשנה הזו כפרמטר הסוג השני שלה R (למשל class TelDeepLinkMatcher : DeepLinkMatcher<DialerKey, TelMatchResult>()). כך המתקשרים יכולים לגשת למאפייני התוצאה המותאמים אישית בלי לבצע המרה לאחור לא מסומנת.

לדוגמה, כדי לתמוך בהתאמת דוגמת עיצוב של תווים כלליים לחיפוש ב-TelDeepLinkMatcher, אפשר להטמיע TelMatchResult כדי לוודא שהתאמות מדויקות יקבלו דירוג גבוה יותר מהתאמות של תווים כלליים לחיפוש. אם ההתאמה מוקפת ב-withBackStack, צריך להסיר את העטיפה WrappedMatchResult לפני ההשוואה כדי שהעדיפות תיבדק מול תוצאת ההתאמה הבסיסית: