陳述式是由 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 功能) 的 Android 應用程式 res/values/strings.xml 程式碼片段範例:
<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/ (通訊埠不相符)
應用程式指定目標
針對應用程式,目標的憑證雜湊和套件名稱必須與應用程式完全相符。