ऐप्लिकेशन लिंक की जांच करना

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

मौजूदा स्टेटमेंट फ़ाइल की जांच करने के लिए, स्टेटमेंट लिस्ट जनरेटर और टेस्टर टूल का इस्तेमाल किया जा सकता है.

यहां दिए गए सेक्शन में, ऐप्लिकेशन लिंक की पुष्टि करने की सुविधा की मैन्युअल तरीके से जांच करने का तरीका बताया गया है. अगर चाहें, तो Google Play डीप लिंक टूल या Android Studio के ऐप लिंक असिस्टेंट की मदद से, पुष्टि करने की सुविधा की जांच की जा सकती है.

पुष्टि करने के लिए, होस्ट की सूची की पुष्टि करना

जांच करते समय, आपको उन सभी होस्ट की सूची की पुष्टि करनी चाहिए जिन्हें सिस्टम को आपके ऐप्लिकेशन के लिए पुष्टि करनी चाहिए. उन सभी यूआरएल की सूची बनाएं जिनके इंटेंट फ़िल्टर में ये एट्रिब्यूट और एलिमेंट शामिल हों:

  • android:scheme एट्रिब्यूट, जिसकी वैल्यू http या https हो
  • android:host एट्रिब्यूट, जिसमें डोमेन यूआरएल पैटर्न हो
  • android.intent.action.VIEW ऐक्शन एलिमेंट
  • android.intent.category.BROWSABLE कैटगरी एलिमेंट

इस सूची का इस्तेमाल करके, यह पक्का करें कि हर नाम वाले होस्ट और सबडोमेन पर, डिजिटल एसेट लिंक JSON फ़ाइल मौजूद हो.

डिजिटल एसेट लिंक फ़ाइलों की पुष्टि करना

हर वेबसाइट के लिए, डिजिटल एसेट लिंक एपीआई का इस्तेमाल करके, यह पक्का करें कि डिजिटल एसेट लिंक JSON फ़ाइल सही तरीके से होस्ट की गई हो और उसे सही तरीके से तय किया गया हो:

https://digitalassetlinks.googleapis.com/v1/statements:list?
   source.web.site=https://<var>domain.name</var>:<var>optional_port</var>&amp;
   relation=delegate_permission/common.handle_all_urls

डाइनैमिक ऐप्लिकेशन लिंक के लिए, रिलेशन एक्सटेंशन की भी जांच की जा सकती है.

https://digitalassetlinks.googleapis.com/v1/statements:list?source.web.site=https://www.example.com&relation=delegate_permission/common.handle_all_urls&return_relation_extensions=true

जांच की प्रोसेस के तहत, लिंक हैंडलिंग के लिए मौजूदा सिस्टम सेटिंग की जांच की जा सकती है. कनेक्ट किए गए डिवाइस पर मौजूद सभी ऐप्लिकेशन के लिए, लिंक हैंडलिंग से जुड़ी मौजूदा नीतियों की सूची पाने के लिए, यह कमांड इस्तेमाल करें:

adb shell dumpsys package domain-preferred-apps

यह कमांड भी वही काम करता है:

adb shell dumpsys package d

कमांड, डिवाइस पर तय किए गए हर उपयोगकर्ता या प्रोफ़ाइल की सूची दिखाता है. इससे पहले, यह हेडर इस फ़ॉर्मैट में दिखता है:

App linkages for user 0:

इस हेडर के बाद, आउटपुट में उस उपयोगकर्ता के लिए लिंक हैंडलिंग सेटिंग की सूची दिखाने के लिए, इस फ़ॉर्मैट का इस्तेमाल किया जाता है:

Package: com.android.vending
Domains: play.google.com market.android.com
Status: always : 200000002

इस सूची से पता चलता है कि उस उपयोगकर्ता के लिए, कौनसे ऐप्लिकेशन किस डोमेन से जुड़े हैं:

  • Package - किसी ऐप्लिकेशन की पहचान, उसके पैकेज के नाम से होती है. यह नाम, उसके मेनिफ़ेस्ट में बताया जाता है.
  • Domains - उन सभी होस्ट की पूरी सूची दिखाता है जिनके वेब लिंक को यह ऐप्लिकेशन हैंडल करता है. इसमें, डेलिमिटर के तौर पर खाली जगहों का इस्तेमाल किया जाता है.
  • Status - इस ऐप्लिकेशन के लिए, लिंक हैंडलिंग की मौजूदा सेटिंग दिखाता है. ऐसा ऐप्लिकेशन जिसकी पुष्टि हो चुकी है और जिसके मेनिफ़ेस्ट में android:autoVerify="true" शामिल है, उसकी स्थिति always दिखती है. इस स्थिति के बाद दिखने वाला हेक्साडेसिमल नंबर, Android सिस्टम के उस रिकॉर्ड से जुड़ा होता है जिसमें उपयोगकर्ता की ऐप्लिकेशन लिंकिंग की सेटिंग सेव होती हैं. इस वैल्यू से यह पता नहीं चलता कि पुष्टि की प्रोसेस पूरी हुई है या नहीं.

जांच का उदाहरण

ऐप्लिकेशन लिंक की पुष्टि की प्रोसेस पूरी होने के लिए, सिस्टम को आपके ऐप्लिकेशन की पुष्टि, उन सभी वेबसाइटों से करनी होगी जिन्हें आपने किसी ऐसे इंटेंट फ़िल्टर में तय किया है जो ऐप्लिकेशन लिंक की ज़रूरी शर्तों को पूरा करता है. यहां दिए गए उदाहरण में, मेनिफ़ेस्ट कॉन्फ़िगरेशन दिखाया गया है, जिसमें कई ऐप्लिकेशन लिंक तय किए गए हैं:

<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>
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="https" />
            <data android:host="www.example2.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="account.example.com" />
        </intent-filter>
    </activity>

      <activity android:name="ThirdActivity">
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <data android:scheme="https" />
            <data android:host="map.example.com" />
        </intent-filter>
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="market" />
            <data android:host="example.com" />
        </intent-filter>
      </activity>

</application>

यहां दिए गए मेनिफ़ेस्ट से, प्लैटफ़ॉर्म जिन होस्ट की पुष्टि करने की कोशिश करेगा उनकी सूची यहां दी गई है:

www.example.com
mobile.example.com
www.example2.com
account.example.com

यहां दिए गए मेनिफ़ेस्ट से, प्लैटफ़ॉर्म जिन होस्ट की पुष्टि करने की कोशिश नहीं करेगा उनकी सूची यहां दी गई है:

map.example.com (it does not have android.intent.category.BROWSABLE)
market://example.com (it does not have either an "http" or "https" scheme)

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