聲明會以 JSON 編碼的聲明清單形式,託管在主體的知名位置,如資產連結規格所定義。陳述式清單包含一或多個陳述式,且主體只能有一個陳述式清單。
陳述式清單語法
請參閱陳述式清單語法。
聲明清單位置
聲明清單會託管在知名位置,具體位置取決於主體類型 (即發布聲明的網站或應用程式)。
網站聲明清單
在網站上,聲明清單是位於下列地址的文字檔:
scheme://domain/.well-known/assetlinks.json
請注意 .well-known 資料夾名稱中的點。
伺服器傳回的任何回應 (HTTP 200 除外) 都會視為錯誤,並導致陳述式清單空白。如果是 HTTPS,任何沒有憑證鏈的連線,如果無法透過信任的根目錄清單驗證,也會導致陳述式清單空白。
範例
以下是網站上的陳述清單範例: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>比對目標
每個陳述式都與目標有關。使用陳述式時,您必須將陳述式中的目標與現實中的某個實體相符。如果陳述式目標與實體相符,就會套用陳述式。以下是判斷目標是否與指定實體相符的規則:
網站目標
如果是網站,網站的通訊協定、主機和通訊埠必須完全相符。系統會隱含假設 HTTP 和 HTTPS 的預設通訊埠 (分別為 80 和 443);如果陳述式目標說明 http://www.example.com:80,則系統會將網站 http://www.example.com 視為相符。
範例
假設有下列陳述式目標
"target": {
"namespace": "web",
"site": "https://www.google.com"
}下列 URI 會 相符:
- 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/ (通訊埠不相符)
應用程式目標
如果是應用程式,目標的憑證雜湊和套件名稱必須與應用程式完全相符。