ステートメント リストは、よく知られている場所にある JSON でエンコードされたファイルまたはスニペットです。
明細書リストの場所
このリストを保存する場所については、ステートメント リストの作成をご覧ください。
構文
ステートメント リストまたはスニペットは、1 つ以上のウェブサイトまたはアプリのステートメントの JSON 配列(JSON オブジェクト)で構成されます。これらのステートメントは任意の順序で指定できます。一般的な構文は次のとおりです。
[
{
"relation": ["relation_string"],
"target": {target_object}
} , ...
]
- 関係
- ターゲットについて宣言されている関係を示す 1 つ以上の文字列の配列。定義済みのリレーション文字列のリストをご覧ください。例:
delegate_permission/common.handle_all_urls
- target
- このステートメントが適用されるターゲット アセット。使用可能なターゲット タイプ:
-
ウェブサイトのターゲット
"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
である必要があります。
- パッケージ名
- このステートメントが適用されるアプリの完全修飾パッケージ名。例:
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
をローカルで実行して生成された証明書のフィンガープリントは通常、ユーザーのデバイス上の証明書と一致しません。アプリで Google Play アプリ署名を使用しているかどうかは、Google Play Console デベロッパー アカウントの Release > Setup > App Integrity で確認できます。その場合、同じページに、アプリに適したデジタル アセット リンクの JSON スニペットも表示されます。
ステートメント リストの例
ウェブサイトとアプリの両方に関する明細を含むウェブサイトの明細リストの例は、http://example.digitalassetlinks.org/.well-known/assetlinks.json をご覧ください。
数十個以上のステートメントにスケーリング
プリンシパルがターゲットごとに異なるステートメントを多数作成したり、異なるプリンシパルから同じターゲット セットにステートメントを発行したりできる場合もあります。たとえば、1 つのウェブサイトが国ごとに異なる多数のトップレベル ドメインで利用可能で、それらすべてが同じモバイルアプリに関するステートメントを作成したい場合があります。
このような場合には、include ステートメントが役立ちます。
このメカニズムを使用して、多くのプリンシパルから 1 つの中央の場所へのポインタを設定できます。これにより、すべてのプリンシパルのステートメントが定義されます。
たとえば、中心となる場所を「https://example.com/includedstatements.json」にできます。このファイルには、上記の例と同じコンテンツを含めるように構成できます。
ウェブサイトからインクルード ファイルへのポインタを設定するには、「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>
ステートメント リストの形式と基本的な概念の詳細については、仕様ドキュメントをご覧ください。