स्टेटमेंट को JSON-कोड में बदली गई स्टेटमेंट लिस्ट में होस्ट किया जाता है. यह लिस्ट, ऐसेट लिंक के स्पेसिफ़िकेशन के मुताबिक, किसी प्रिंसिपल पर जानी-पहचानी जगह पर मौजूद होती है. स्टेटमेंट की सूची में एक या उससे ज़्यादा स्टेटमेंट होते हैं. साथ ही, किसी प्रिंसिपल के पास सिर्फ़ एक स्टेटमेंट की सूची हो सकती है.
स्टेटमेंट की सूची का सिंटैक्स
स्टेटमेंट की सूची का सिंटैक्स देखें.
स्टेटमेंट की सूची की जगह
स्टेटमेंट की सूची को ऐसी जगह पर होस्ट किया जाता है जिसके बारे में सभी को पता हो. यह जगह, मुख्य इकाई (स्टेटमेंट देने वाली वेबसाइट या ऐप्लिकेशन) के टाइप पर निर्भर करती है.
वेबसाइट के स्टेटमेंट की सूचियां
किसी वेबसाइट पर, स्टेटमेंट की सूची एक टेक्स्ट फ़ाइल होती है. यह फ़ाइल इस पते पर मौजूद होती है:
scheme://domain/.well-known/assetlinks.json
.well-known फ़ोल्डर के नाम में मौजूद बिंदु को ध्यान में रखें.
HTTP 200 के अलावा, सर्वर से मिले किसी भी जवाब को गड़बड़ी माना जाता है. इससे स्टेटमेंट की सूची खाली हो जाएगी. एचटीटीपीएस के लिए, अगर किसी कनेक्शन में ऐसी सर्टिफ़िकेट चेन नहीं है जिसकी पुष्टि भरोसेमंद रूट लिस्ट से की जा सकती है, तो स्टेटमेंट की सूची खाली होगी.
उदाहरण
यहां किसी वेबसाइट पर स्टेटमेंट की सूची का उदाहरण दिया गया है: http://example.digitalassetlinks.org/.well-known/assetlinks.json
Android ऐप्लिकेशन के स्टेटमेंट की सूचियां
Android ऐप्लिकेशन में, स्टेटमेंट की सूची एक JSON स्निपेट होती है. इसका सिंटैक्स, वेबसाइट की स्टेटमेंट फ़ाइल के जैसा ही होता है. हालांकि, इसे strings.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/ (Host name does not match)
- https://www.google.com:444/ (पोर्ट मैच नहीं करता)
ऐप्लिकेशन टारगेट
किसी ऐप्लिकेशन के लिए, टारगेट के सर्टिफ़िकेट हैश और पैकेज का नाम, ऐप्लिकेशन से पूरी तरह मेल खाना चाहिए.