陳述式清單是 JSON 編碼的檔案或已知位置的程式碼片段。
對帳單清單的位置
請參閱建立陳述式清單來瞭解此清單應儲存在何處。
語法
陳述式清單或程式碼片段包含一或多個網站或應用程式陳述式的 JSON 陣列,做為 JSON 物件。這些陳述式可以按任何順序排列。一般語法如下:
[
{
"relation": ["relation_string"],
"target": {target_object}
} , ...
]
- 關係
- 由一或多個字串構成的陣列,用於說明宣告目標的關係。請參閱已定義的關係字串清單。範例:
delegate_permission/common.handle_all_urls
- 目標
- 此陳述式適用的目標素材資源。可用的目標類型:
-
網站目標
"target": {
"namespace": "web",
"site": "site_root_url"
}
- 命名空間
- 網站必須
web
。
- 網站
- 網站的陳述式 URI 格式,格式為
http[s]://<hostname>[:<port>]
,其中 <hostname> 完整且使用通訊埠 80 或 HTTP 通訊埠 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
。
- 套件名稱
- 應用程式所適用的應用程式完整套件名稱。範例:
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 應用程式指向 include 檔案的指標,請將「res/values/strings.xml」變更為:
<resources>
...
<string name="asset_statements">
[{
\"include\": \"https://example.com/includedstatements.json\"
}]
</string>
</resources>
如要進一步瞭解對帳單清單的格式和基本概念,請參閱規格文件。