ऐप्लिकेशन लिंक, डीप लिंक होते हैं. ये एचटीटीपी या एचटीटीपीएस स्कीम का इस्तेमाल करते हैं. Android इनकी पुष्टि करता है कि ये आपकी वेबसाइट से जुड़े हैं. ऐप्लिकेशन लिंक हैंडल करने के लिए रजिस्टर करने के लिए, यह तरीका अपनाएं:
- अपने ऐप्लिकेशन मेनिफ़ेस्ट में एक या उससे ज़्यादा इंटेंट फ़िल्टर जोड़ें. इनमें अपनी वेबसाइट के डोमेन या यूआरएल की जानकारी दें.
- इंटेंट फ़िल्टर एलिमेंट में
autoVerify="true"attribute
जोड़ें. इससे सिस्टम को यह सिग्नल मिलता है कि उसे आपकी वेबसाइट केassetlinks.json
कॉन्फ़िगरेशन के हिसाब से, स्कीम और होस्ट डोमेन की पुष्टि करनी चाहिए. - वेबसाइट के असोसिएशन के बारे में जानकारी दें.
यहां स्कीम, होस्ट, और autoVerify="true
के साथ ऐप्लिकेशन लिंक के एलान का एक उदाहरण दिया गया है":
<activity
android:name=".MainActivity"
android:exported="true"
...>
<!-- Make sure you explicitly set android:autoVerify to "true". -->
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<!-- If a user clicks on a link that uses the "http" scheme, your
app should be able to delegate that traffic to "https". -->
<!-- Do not include other schemes, as this will prevent verification. -->
<data android:scheme="http" />
<data android:scheme="https" />
<!-- Include one or more domains that should be verified. -->
<data android:host="www.example.com" />
<data android:host="*.example.com" />
</intent-filter>
</activity>
कोड के बारे में मुख्य बातें
- AutoVerify: ऐप्लिकेशन लिंक के लिए,
android:autoVerify="true
" एट्रिब्यूट ज़रूरी है. इससे सिस्टम को यह पता चलता है कि उसे आपके ऐप्लिकेशन और<data>
टैग में बताई गई स्कीम और डोमेन के बीच तालमेल की पुष्टि करनी है. हमारा सुझाव है कि आप हर उस इंटेंट फ़िल्टर मेंautoVerify="true
" जोड़ें जिसकी पुष्टि करनी है. - डेटा एलिमेंट: हर ऐप्लिकेशन लिंक इंटेंट फ़िल्टर में एक या उससे ज़्यादा
<data>
एलिमेंट शामिल होने चाहिए. ये एलिमेंट, ऐसे स्कीम और होस्ट फ़ॉर्मैट तय करते हैं जो पुष्टि किए जा सकने वाले आपकी वेबसाइट के डोमेन से मेल खाते हों. - स्कीम: इंटेंट फ़िल्टर में,
http
औरhttps
, दोनों स्कीम के लिए<data>
एलिमेंट शामिल होने चाहिए. होस्ट: एक या उससे ज़्यादा होस्ट से मैच करने के लिए,
<data>
एलिमेंट जोड़े जा सकते हैं. हालांकि, ऐसा करना ज़रूरी नहीं है. एक से ज़्यादा सबडोमेन (जैसे,*
) से मेल खाने के लिए, वाइल्डकार्ड (*
) का इस्तेमाल करें. सिस्टम, आपकी वेबसाइट पर मौजूद assetlinks.json फ़ाइल के हिसाब से, हर होस्ट की पुष्टि करने की कोशिश करेगा.*.example.com
ध्यान दें कि पाथ-लेवल की किसी भी राउटिंग को assetlinks.json फ़ाइल से मैनेज किया जाना चाहिए. इसके बारे में जानने के लिए, यहां दिए गए सबसे सही तरीके वाला सेक्शन देखें.एक से ज़्यादा होस्ट: अगर आपने एक से ज़्यादा होस्ट डोमेन के बारे में बताया है, तो सिस्टम (Android 12 और इसके बाद के वर्शन पर) हर डोमेन की पुष्टि करने की कोशिश करेगा. अगर किसी होस्ट की पुष्टि हो जाती है, तो ऐप्लिकेशन उस पुष्टि किए गए होस्ट से मिले लिंक के लिए डिफ़ॉल्ट हैंडलर बन जाता है. Android 11 और इससे पहले के वर्शन पर, अगर किसी एक होस्ट की भी पुष्टि नहीं हो पाती है, तो पुष्टि नहीं हो पाएगी.
एक से ज़्यादा इंटेंट फ़िल्टर: अगर आपको यूनीक यूआरएल (जैसे कि स्कीम और होस्ट का कोई खास कॉम्बिनेशन) के बारे में बताना है, तो अलग-अलग फ़िल्टर बनाना ज़रूरी है. ऐसा इसलिए, क्योंकि एक ही इंटेंट फ़िल्टर में मौजूद कई
<data>
एलिमेंट को एक साथ मर्ज कर दिया जाता है, ताकि उनके कंबाइंड एट्रिब्यूट के सभी वैरिएशन का हिसाब रखा जा सके.
मेनिफ़ेस्ट फ़ाइल के फ़िल्टर करने से जुड़े नियमों के बारे में जानकारी
अगर Android 15 और इसके बाद के वर्शन में, डाइनैमिक ऐप्लिकेशन लिंक के साथ इस्तेमाल करने के लिए फ़िल्टर सेट अप किए जा रहे हैं, तो यह ध्यान रखना ज़रूरी है कि सर्वर-साइड assetlinks.json फ़ाइल में बताए गए डाइनैमिक नियम, यूआरएल के उन नियमों के स्कोप को नहीं बढ़ा सकते जिन्हें आपने अपने ऐप्लिकेशन मेनिफ़ेस्ट में स्टैटिक तौर पर बताया है.
इसलिए, हमारा सुझाव है कि आप यह तरीका अपनाएं:
- अपने ऐप्लिकेशन मेनिफ़ेस्ट में, ज़्यादा से ज़्यादा स्कोप सेट करें. जैसे, सिर्फ़ स्कीम और डोमेन का एलान करके
- ज़्यादा बेहतर तरीके से काम करने के लिए, सर्वर-साइड assetlinks.json फ़ाइल में मौजूद नियमों का इस्तेमाल करें. जैसे, पाथ-लेवल राउटिंग.
इस कॉन्फ़िगरेशन की मदद से, ज़रूरत के हिसाब से assetlinks.json
फ़ाइल में नए ऐप्लिकेशन लिंक पाथ डाइनैमिक तरीके से जोड़े जा सकते हैं. साथ ही, आपको यह पता होगा कि वे ऐप्लिकेशन मेनिफ़ेस्ट में सेट किए गए बड़े स्कोप के अंदर फ़िट होंगे.
एक से ज़्यादा होस्ट के लिए ऐप्लिकेशन लिंक की सुविधा
सिस्टम को, ऐप्लिकेशन के यूआरएल इंटेंट फ़िल्टर के डेटा एलिमेंट में बताए गए होस्ट की पुष्टि करनी होगी. इसके लिए, उसे उस इंटेंट फ़िल्टर में मौजूद वेब डोमेन पर होस्ट की गई डिजिटल ऐसेट लिंक फ़ाइलों का इस्तेमाल करना होगा. अगर पुष्टि नहीं हो पाती है, तो सिस्टम, इंटेंट को हल करने के लिए अपने स्टैंडर्ड तरीके का इस्तेमाल करता है. इसके बारे में ऐप्लिकेशन के कॉन्टेंट के डीप लिंक बनाना लेख में बताया गया है. हालांकि, ऐप्लिकेशन की पुष्टि अब भी डिफ़ॉल्ट हैंडलर के तौर पर की जा सकती है. ऐसा, ऐप्लिकेशन के अन्य इंटेंट फ़िल्टर में तय किए गए किसी भी यूआरएल पैटर्न के लिए किया जा सकता है.
उदाहरण के लिए, अगर https://www.example.com/.well-known/assetlinks.json
पर assetlinks.json
फ़ाइल मिली है, लेकिन https://www.example.net/.well-known/assetlinks.json
पर नहीं, तो इंटेंट फ़िल्टर वाले ऐप्लिकेशन की पुष्टि सिर्फ़ https://www.example.com
के लिए की जाएगी:
<application>
<activity android:name=”MainActivity”>
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="http" />
<data android:scheme="https" />
<data android:host="www.example.com" />
</intent-filter>
</activity>
<activity android:name="SecondActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="https" />
<data android:host="www.example.net" />
</intent-filter>
</activity>
</application>
एक से ज़्यादा सबडोमेन के लिए, ऐप्लिकेशन लिंक करने की सुविधा
डिजिटल ऐसेट लिंक प्रोटोकॉल, आपके इंटेंट फ़िल्टर में मौजूद सबडोमेन को यूनीक और अलग-अलग होस्ट के तौर पर मानता है. इसलिए, अगर आपके इंटेंट फ़िल्टर में अलग-अलग सबडोमेन वाले कई होस्ट शामिल हैं, तो आपको हर डोमेन पर मान्य assetlinks.json
पब्लिश करना होगा.
उदाहरण के लिए, यहां दिए गए इंटेंट फ़िल्टर में www.example.com
और mobile.example.com
को इंटेंट यूआरएल होस्ट के तौर पर स्वीकार किया गया है. इसलिए, मान्य assetlinks.json
को https://www.example.com/.well-known/assetlinks.json
और https://mobile.example.com/.well-known/assetlinks.json
, दोनों पर पब्लिश किया जाना चाहिए.
<application>
<activity android:name="MainActivity">
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="https" />
<data android:scheme="https" />
<data android:host="www.example.com" />
<data android:host="mobile.example.com" />
</intent-filter>
</activity>
</application>
इसके अलावा, अगर आपने वाइल्डकार्ड (जैसे कि
*.example.com
) के साथ अपना होस्टनेम घोषित किया है, तो आपको अपनी assetlinks.json
फ़ाइल को रूट
होस्टनेम (example.com
) पर पब्लिश करना होगा. उदाहरण के लिए, इस इंटेंट फ़िल्टर वाले ऐप्लिकेशन की पुष्टि, example.com
के किसी भी सब-नाम (जैसे कि
foo.example.com
) के लिए की जाएगी. हालांकि, इसके लिए ज़रूरी है कि assetlinks.json
फ़ाइल को https://example.com/.well-known/assetlinks.json
पर पब्लिश किया गया हो:
<application>
<activity android:name="MainActivity">
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="https" />
<data android:host="*.example.com" />
</intent-filter>
</activity>
</application>
एक ही डोमेन से जुड़े कई ऐप्लिकेशन की जांच करना
अगर आपने एक ही डोमेन से जुड़े कई ऐप्लिकेशन पब्लिश किए हैं, तो उन सभी की पुष्टि की जा सकती है. हालांकि, अगर ऐप्लिकेशन एक ही डोमेन होस्ट और पाथ को हल कर सकते हैं, तो सिर्फ़ हाल ही में इंस्टॉल किया गया ऐप्लिकेशन उस डोमेन के लिए वेब इंटेंट को हल कर सकता है. ऐसा किसी ऐप्लिकेशन के लाइट और फ़ुल वर्शन के मामले में हो सकता है.
ऐसे मामले में, उपयोगकर्ता के डिवाइस पर ऐसे ऐप्लिकेशन देखें जो एक-दूसरे के साथ काम नहीं करते. हालांकि, इसके लिए आपके पास ज़रूरी पैकेज की दृश्यता होनी चाहिए. इसके बाद, अपने ऐप्लिकेशन में, कस्टम चूज़र डायलॉग दिखाएं. इसमें queryIntentActivities
को कॉल करने के नतीजे शामिल हों. उपयोगकर्ता, डायलॉग बॉक्स में दिखने वाले मिलते-जुलते ऐप्लिकेशन की सूची से अपनी पसंद का ऐप्लिकेशन चुन सकता है.