陳述式清單是採用 JSON 編碼的檔案或程式碼片段,位於知名位置。
對帳單清單的位置
如要瞭解這個清單的儲存位置,請參閱建立陳述式清單一文。
語法
陳述式清單或程式碼片段由一或多個網站或應用程式陳述式的 JSON 陣列組成,其中具有 JSON 物件。這些陳述式可以任意順序。一般語法如下:
[
{
"relation": ["relation_string"],
"target": {target_object}
} , ...
]
- relation
- 一或多個字串的陣列,用來說明宣告目標之間的關係。請參閱定義的關係字串清單。範例:
delegate_permission/common.handle_all_urls
- 目標
- 適用這個陳述式的目標資產。可用的目標類型:
-
網站目標
"target": {
"namespace": "web",
"site": "site_root_url"
}
- 命名空間
- 必須為網站輸入
web
。
- 網站
- 為陳述式的目標網站 URI,格式為
http[s]://<hostname>[:<port>]
,其中 <hostname> 必須完全符合規定,而對 HTTP 使用通訊埠 80 或 HTTPS 通訊埠 443 時,必須省略 <port>。網站目標只能是根網域;您無法將網站限制在特定的子目錄中;系統會比對這個根目錄下的所有目錄。子網域不應視為相符。也就是說,如果聲明檔案是由 www.example.com 代管,www.puppies.example.com 就不會視為相符。如需網站目標比對的相關規則和範例,請參閱目標說明文件。範例: http://www.example.com
-
Android 應用程式目標
"target": {
"namespace": "android_app",
"package_name": "fully_qualified_package_name",
"sha256_cert_fingerprints": ["cert_fingerprint"]
}
- 命名空間
- 如果是 Android 應用程式,必須為
android_app
。
- package_name
- 這個陳述式適用的應用程式完整套件名稱。範例:
com.google.android.apps.maps
- sha256_cert_fingerprints
- 此陳述式適用的應用程式憑證的大寫 SHA265 指紋。您可以使用
openssl
或 Java keytool
進行計算,如下所示:
openssl x509 -in $CERTFILE -noout -fingerprint -sha256
keytool -printcert -file $CERTFILE | grep SHA256
例如: ["14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5"]
。
如果您為應用程式使用 Play 應用程式簽署功能,則在本機執行 keytool
或 openssl
產生的憑證指紋通常不會與使用者裝置上的憑證指紋相符。您可以在 Play 管理中心的開發人員帳戶 (Release > Setup > App Integrity) 中,確認應用程式是否使用 Play 應用程式簽署功能;如果有的話,您就會在相同頁面看到應用程式的正確 Digital Asset Links JSON 程式碼片段。
陳述式清單範例
以下是網站陳述式清單範例,其中包含有關網站和應用程式的陳述式:http://example.digitalassetlinks.org/.well-known/assetlinks.json
擴充至數十個以上的陳述式
在某些情況下,主體可能想要針對不同的目標做出許多不同的陳述式,或者可能需要從不同主體向同一組目標發出陳述式。例如,一個網站可能在每個國家/地區的頂層網域中,而這些網域都可能想針對同一個行動應用程式建立聲明。
在這種情況下,加入陳述式能夠派上用場。
透過這個機制,您可以將多個不同主體的指標設為一個中央位置,進而定義所有主體的陳述式。
舉例來說,您可能會決定中央位置應為「https://example.com/includedstatements.json」。這個檔案可以設為包含與上述範例相同的內容。
如要將從網站設為 include 檔案的指標,請將「https://example.com/.well-known/assetlinks.json」變更為:
[{
"include": "https://example.com/includedstatements.json"
}]
如要將 Android 應用程式的指標設定至包含檔案,請將「res/values/strings.xml」變更為:
<resources>
...
<string name="asset_statements">
[{
\"include\": \"https://example.com/includedstatements.json\"
}]
</string>
</resources>
想更深入瞭解陳述式清單格式和相關基礎概念,請參閱規格文件。