DeepLinkMatcher इंस्टेंस बनाना

इनकमिंग DeepLinkRequest इंस्टेंस को उन कुंजियों से मैप करने के लिए जिन्हें आपके ऐप्लिकेशन के बैक स्टैक में जोड़ा जा सकता है, आपको 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>: matchRequest और match से मिला MatchResult का सब-टाइप.

दूसरा टाइप पैरामीटर, R, मैच की खास जानकारी को सुरक्षित रखता है. इसके लिए, अनचेक्ड डाउनकास्टिंग की ज़रूरत नहीं होती:

  • StaticKeyDeepLinkMatcher, R को DeepLinkMatcher.MatchResult<T> से बाइंड करता है.
  • UriDeepLinkMatcher, R को UriMatchResult से बाइंड करता है. साथ ही, पार्स किए गए पाथ और क्वेरी आर्ग्युमेंट को पैटर्न-मैचिंग स्कोर के साथ बनाए रखता है.
  • BackStackMatcher, R को BackStackMatchResult से बाइंड करता है. साथ ही, withBackStack से बनाई गई सिंथेटिक पिछली गतिविधियां लिस्ट को बनाए रखता है.

अनुरोधों को पहले से फ़िल्टर करना

DeepLinkMatcher के लागू होने पर, DeepLinkMatcher.Filter इंस्टेंस की सूची तय की जा सकती है. इससे अनुरोधों का आकलन करने से पहले, उन्हें फ़िल्टर किया जा सकता है.

लाइब्रेरी में सामान्य फ़िल्टर बनाने के लिए, हेल्पर फ़ंक्शन शामिल हैं:

इस तरीके से, अलग-अलग कार्रवाइयों के लिए एक ही यूआरआई पैटर्न का फिर से इस्तेमाल किया जा सकता है. जैसे, देखना बनाम बदलाव करना:

Filter एक फ़ंक्शनल (एसएएम) इंटरफ़ेस है. इसलिए, लैम्ब्डा एक्सप्रेशन का इस्तेमाल करके भी फ़िल्टर बनाए जा सकते हैं:

उपलब्ध मैचर का इस्तेमाल करना

लाइब्रेरी में तीन स्टैंडर्ड DeepLinkMatcher लागू करने के तरीके शामिल हैं: StaticKeyDeepLinkMatcher, UriDeepLinkMatcher, और BackStackMatcher. अगर ये मैचर आपके ऐप्लिकेशन की ज़रूरी शर्तों को पूरा नहीं करते हैं, तो कस्टम डीप लिंक मैचर बनाए जा सकते हैं.

ऐसे बेसिक डीप लिंक जिनमें आर्ग्युमेंट नहीं होते, उनके लिए StaticKeyDeepLinkMatcher का इस्तेमाल करें. इससे उन अनुरोधों को मैच किया जा सकेगा जो दिए गए सभी फ़िल्टर के मुताबिक हों.

उदाहरण के लिए, ACTION_APPLICATION_PREFERENCES के लिए इंटेंट मैनेज करने के लिए:

हायरारकी वाले यूआरआई को पैटर्न से मैच करने और आर्ग्युमेंट निकालने के लिए, UriDeepLinkMatcher का इस्तेमाल करें. उदाहरण के लिए, id आर्ग्युमेंट को डेस्टिनेशन कुंजी में निकालने के लिए, www.example.com/users/{id} से मैच किया जा सकता है. ज़्यादा जानकारी के लिए, यूआरआई डीप लिंक मैच करना लेख पढ़ें.

सिंथेटिक पिछली गतिविधियां बनाना

किसी सफल मैच के आधार पर सिंथेटिक पिछली गतिविधियां बनाने का तरीका तय करने के लिए, BackStackMatcher का इस्तेमाल करें. BackStackMatcher को सीधे इंस्टैंशिएट करने के बजाय, किसी दूसरे DeepLinkMatcher पर withBackStack एक्सटेंशन फ़ंक्शन को कॉल करें. withBackStack, रिसीवर को BackStackMatcher में रैप करता है. यह BackStackMatchResult दिखाता है, जिसमें सिंथेटिक पिछली गतिविधियां List शामिल होता है. ऐसा इसलिए, क्योंकि BackStackMatchResult, मैच के नतीजे के आधार पर तुलना करता है. इसलिए, withBackStack में मैचर को रैप करने से, मैच की ओरिजनल रैंकिंग बनी रहती है.

अपनी गतिविधि में पिछली गतिविधियों को मैनेज करने के लिए, आने वाले अनुरोध से मैच करें देखें.