स्टेटमेंट की सूची बनाना

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

स्टेटमेंट लिस्ट सिंटैक्स

स्टेटमेंट सूची का सिंटैक्स देखें.

स्टेटमेंट की सूची की जगह

स्टेटमेंट की सूची को किसी ऐसी मशहूर जगह पर होस्ट किया गया है जो प्रिंसिपल के टाइप पर आधारित होती है.

वेबसाइट स्टेटमेंट सूचियां

वेबसाइट पर, स्टेटमेंट सूची एक टेक्स्ट फ़ाइल होती है, जो इस पते पर मौजूद होती है:

scheme://domain/.well-known/assetlinks.json

.well-known फ़ोल्डर के नाम में डॉट पर ध्यान दें.

HTTP 200 के अलावा सर्वर से मिलने वाले किसी भी रिस्पॉन्स को गड़बड़ी माना जाता है. इससे, स्टेटमेंट की सूची खाली हो जाएगी. एचटीटीपीएस के लिए, बिना सर्टिफ़िकेट वाली कोई भी चेन जिसकी पुष्टि रूट रूट लिस्ट के ज़रिए की जा सकती है उसकी वजह से भी स्टेटमेंट सूची खाली हो जाएगी.

उदाहरण

यहां वेबसाइट पर उदाहरण के तौर पर दी गई स्टेटमेंट की सूची दी गई है: http://example.digitalassetlinks.org/.well-known/assetlinks.json

Android ऐप्लिकेशन विवरण सूचियां

एक Android ऐप्लिकेशन में, स्टेटमेंट सूची एक JSON स्निपेट होती है, जिसका सिंटैक्स, वेबसाइट के स्टेटमेंट वाली फ़ाइल जैसा ही होता है. हालांकि, यह स्ट्रिंग, स्ट्रिंग.xml फ़ाइल में एम्बेड होती है और मेनिफ़ेस्ट में बताई गई होती है, जैसा कि आगे दिखाया गया है.

AndroidManifest.xml में:

<manifest>
  <application>
    ...
    <meta-data android:name="asset_statements" android:resource="@string/asset_statements" />
    ...
  </application>
</manifest>

res/values/strings.xml में:

<resources>
  ...
  <string name="asset_statements">
    ... statement list ...
  </string>
</resources>

उदाहरण

यहां एक ऐसे Android ऐप्लिकेशन के लिए res/values/strings.xml स्निपेट का उदाहरण दिया गया है जो ऐप्लिकेशन के साथ जगह की जानकारी शेयर करने की सुविधा देता है. फ़िलहाल, यह सुविधा Android पर काम नहीं करती:

<resources>
    ...
    <string name="asset_statements">
      [{
        \"relation\": [\"delegate_permission/common.share_location\"],
        \"target\": {
          \"namespace\": \"web\",
          \"site\": \"https://example.com\"
        }
      }]
    </string>
</resources>

टारगेट का मिलान करना

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

वेबसाइट टारगेट

किसी वेबसाइट के लिए साइट स्कीम, होस्ट, और पोर्ट का बिल्कुल मेल खाना ज़रूरी है. एचटीटीपी और एचटीटीपीएस (क्रमश: 80 और 443) के लिए डिफ़ॉल्ट पोर्ट को अनुमान के तौर पर माना जाता है. अगर स्टेटमेंट टारगेट http://www.example.com:80 है, तो http://www.example.com वेबसाइट को मैच माना जाता है.

उदाहरण

नीचे दिए गए स्टेटमेंट टारगेट को ध्यान में रखते हुए

"target": {
  "namespace": "web",
  "site": "https://www.google.com"
}

ये यूआरआई मिल जाएंगे :

  • https://www.google.com/
  • https://www.google.com:443/
  • https://www.google.com/foo
  • https://www.google.com/foo?bar
  • https://www.google.com/foo#bar
  • https://user@password:www.google.com

ये यूआरएल मेल नहीं खाएंगे:

  • http://www.google.com/ (गलत योजना)
  • https://google.com/ (होस्ट का नाम मेल नहीं खाता)
  • https://www.google.com:444/ (पोर्ट मेल नहीं खाता)

ऐप्लिकेशन टारगेट

किसी ऐप्लिकेशन के लिए, टारगेट का सर्टिफ़िकेट हैश और पैकेज नाम, ऐप्लिकेशन से पूरी तरह मेल खाना चाहिए.