डीप लिंक की सुविधा

वर्शन 1.2.0 से, Navigation 3 में DeepLinkRequest और DeepLinkMatcher क्लास का इस्तेमाल करके, आपके ऐप्लिकेशन में मौजूद डेस्टिनेशन के लिए डीप लिंकिंग की सुविधा काम करती है.

अपने ऐप्लिकेशन में डीप लिंक की सुविधा चालू करने के लिए, यह तरीका अपनाएं:

  1. इंटेंट फ़िल्टर तय करें: अपने AndroidManifest.xml में इंटेंट फ़िल्टर तय करें, ताकि यह बताया जा सके कि आपका ऐप्लिकेशन किन यूआरआई को हैंडल कर सकता है.
  2. DeepLinkMatcher इंस्टेंस बनाएं, ताकि आने वाले अनुरोधों को नेविगेशन बटन पर मैप किया जा सके.
  3. अपनी गतिविधि के onCreate या onNewIntent तरीके में, इनकमिंग अनुरोधों को मैच करें और उसके हिसाब से अपनी पिछली गतिविधियों को अपडेट करें.

DeepLinkRequest बनाएं

DeepLinkRequest, इनकमिंग डीप लिंक को दिखाता है. इसमें एक DeepLinkUri और वैकल्पिक RequestExtras होता है. इसमें अतिरिक्त जानकारी भी होती है, जैसे कि इंटेंट ऐक्शन या एमआईएमई टाइप.

DeepLinkRequest अतिरिक्त सुविधाएं दें

डीप लिंक से जुड़ी अतिरिक्त जानकारी सेव करने के लिए, RequestExtras क्लास का इस्तेमाल करें. एक्स्ट्रा को टाइप-सेफ़ तरीके से तय करने और इंस्टैंशिएट करने के लिए, लाइब्रेरी में RequestExtrasKey इंटरफ़ेस और requestExtras डीएसएल उपलब्ध है.

इसके अलावा, लाइब्रेरी में दो अतिरिक्त कुंजियां और उनसे जुड़े हेल्पर होते हैं:

  • MimeTypeExtrasKey: इसका इस्तेमाल, एमआईएमई टाइप String को स्टोर करने के लिए किया जाता है.
  • ActionExtrasKey (सिर्फ़ Android के लिए): इसका इस्तेमाल, Intent की कार्रवाई को सेव करने के लिए किया जाता है String.

अपने कस्टम एक्स्ट्रा तय करने के लिए, टाइप किए गए जेनरिक के साथ RequestExtrasKey इंटरफ़ेस लागू करें:

खाली इंस्टेंस बनाने के लिए, emptyRequestExtras() का भी इस्तेमाल किया जा सकता है. इसके अलावा, + (plus) और - (minus) ऑपरेटर का इस्तेमाल करके, अतिरिक्त चीज़ों को जोड़ा जा सकता है.

Intent से DeepLinkRequest बनाना

Android पर, Intent से सीधे DeepLinkRequest बनाया जा सकता है. इस तरह से बनाए जाने पर, DeepLinkRequest को इस तरह बनाया जाता है:

  • uri को इंटेंट के data फ़ील्ड से कॉपी किया जाता है.
  • अगर वैल्यू शून्य नहीं है, तो एमआईएमई टाइप और कार्रवाई के एक्स्ट्रा, उनसे जुड़े इंटेंट फ़ील्ड से सेट किए जाते हैं.
  • नॉन-नुल वैल्यू वाले सभी intent.extras, DeepLinkRequest.IntentExtrasKey में SavedState के तौर पर सेव किए जाते हैं.
  • extras पैरामीटर का इस्तेमाल करके दी गई कोई भी अतिरिक्त जानकारी जोड़ दी जाती है.

DeepLinkMatcher, आने वाले DeepLinkRequest इंस्टेंस को नेविगेशन बटन पर मैप करता है. इन बटन को आपके ऐप्लिकेशन की पिछली गतिविधियों में जोड़ा जा सकता है. Navigation 3 में, पहले से मौजूद तीन मैचर होते हैं: पैटर्न पर आधारित यूआरआई मैचिंग के लिए UriDeepLinkMatcher, बुनियादी लिंक के लिए StaticKeyDeepLinkMatcher, और सिंथेटिक बैक स्टैक बनाने के लिए BackStackMatcher. यह लाइब्रेरी, कस्टम मैचर के साथ भी काम करती है. इनका इस्तेमाल उन मामलों में किया जाता है जो पहले से मौजूद मैचर के दायरे में नहीं आते.

ज़्यादा जानकारी के लिए, DeepLinkMatchers बनाना लेख पढ़ें.

इंटेंट फ़िल्टर जोड़ना

अपनी गतिविधि शुरू करने के लिए डीप लिंक चालू करना ज़रूरी है. इसके लिए, आपको अपने ऐप्लिकेशन के AndroidManifest.xml में, मैच होने वाले <intent-filter> एलिमेंट तय करने होंगे. ज़्यादा जानकारी के लिए, इनकमिंग लिंक के लिए इंटेंट फ़िल्टर जोड़ना लेख पढ़ें.

आने वाले अनुरोध को मैच करना

DeepLinkMatcher इंस्टेंस बनाने के बाद, अपनी गतिविधि में आने वाले अनुरोधों को मैच किया जा सकता है.

आने वाले अनुरोध को मैच करने के लिए, यह तरीका अपनाएं:

  1. DeepLinkMatcher इंस्टेंस को इंस्टैंशिएट करें.
  2. DeepLinkMatcher के सभी इंस्टेंस को एक साथ जोड़ें. इसके लिए, साफ़ तौर पर या मल्टीबाइंडिंग का इस्तेमाल करें.
  3. DeepLinkRequestबनाएं, जो आने वाले Intent से ट्रिगर हो.
  4. अनुरोध को सभी मैच करने वाले टूल से मैच करें और सबसे सही मैच ढूंढें.
  5. मैच के नतीजे से पिछली गतिविधियां बनाएं.