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

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

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

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

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

स्टेटमेंट की सूची एक जानी-मानी जगह पर होस्ट की जाती है. यह प्रिंसिपल के टाइप (जानकारी देने वाली वेबसाइट या ऐप्लिकेशन) के हिसाब से होती है.

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

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

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

.well-known फ़ोल्डर के नाम में बिंदु नोट करें.

HTTP 200 के अलावा सर्वर से मिलने वाले किसी भी जवाब को गड़बड़ी माना जाता है. ऐसा करने पर, स्टेटमेंट की सूची खाली हो जाएगी. एचटीटीपीएस के लिए, बिना सर्टिफ़िकेट चेन वाले किसी भी कनेक्शन की भरोसेमंद रूट सूची की मदद से स्टेटमेंट की सूची खाली हो जाएगी.

उदाहरण

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

Android ऐप्लिकेशन के स्टेटमेंट की सूचियां

Android ऐप्लिकेशन में, स्टेटमेंट की सूची एक JSON स्निपेट होता है जिसका सिंटैक्स वेबसाइट स्टेटमेंट फ़ाइल की तरह ही होता है, लेकिन इसेString.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/ (पोर्ट मेल नहीं खाता)

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

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