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

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

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

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

DeepLinkRequest बनाना

DeepLinkRequest का मतलब, आने वाला डीप लिंक होता है. इसमें एक DeepLinkUri और ज़रूरी नहीं कि RequestExtras शामिल हो. इसमें इंटेंट ऐक्शन या MIME टाइप जैसी अतिरिक्त जानकारी होती है.

DeepLinkRequest के एक्स्ट्रा उपलब्ध कराना

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

इसके अलावा, लाइब्रेरी दो एक्स्ट्रा की और उनसे जुड़े हेल्पर उपलब्ध कराती है:

  • 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. आने वाले Intent से, DeepLinkRequest बनाएं.
  4. सभी मैचिंग टूल के ख़िलाफ़ अनुरोध को मैच करें और सबसे अच्छा मैच ढूंढें.
  5. मैच के नतीजे से, पिछली गतिविधियां बनाएं.