ステートメント リストの構文

ステートメント リストは、既知の場所にある JSON エンコードのファイルまたはスニペットです。

ステートメント リストの場所

このリストを保存する場所については、ステートメント リストの作成をご覧ください。

構文

ステートメント リストまたはスニペットは、1 つ以上のウェブサイトまたはアプリのステートメントの JSON 配列(JSON オブジェクト)で構成されます。これらのステートメントは任意の順序で指定できます。一般的な構文は次のとおりです。

[
  {
    "relation": ["relation_string"],
    "target": {target_object}
  } , ...
]
relation
ターゲットに関して宣言される関係を記述する 1 つ以上の文字列の配列。定義済みの関係文字列のリストをご覧ください。例: delegate_permission/common.handle_all_urls
ターゲット
このステートメントが適用されるターゲット アセット。使用可能なターゲット タイプ: <ph type="x-smartling-placeholder">
    </ph>
  • "target": {
      "namespace": "web",
      "site": "site_root_url"
    }
    namespace
    ウェブサイトの場合は web にする必要があります。
    サイト
    ステートメントのターゲットとなるサイトの URI(http[s]://<hostname>[:<port>] 形式)。<hostname> は完全修飾する必要があります。HTTP にポート 80 を使用する場合、または HTTPS にポート 443 を使用する場合は、<port> を省略する必要があります。ウェブサイトのターゲットにはルートドメインのみを指定できます。特定のサブディレクトリに限定することはできません。すべてのディレクトリが一致します。サブドメインは一致と見なされません。つまり、記述ファイルが www.example.com でホストされている場合、www.puppies.example.com は一致と見なされません。ウェブサイト ターゲット マッチングのルールと例については、ターゲットに関するドキュメントをご覧ください。例: http://www.example.com
  • "target": {
      "namespace": "android_app",
      "package_name": "fully_qualified_package_name",
      "sha256_cert_fingerprints": ["cert_fingerprint"]
    }
    namespace
    Android アプリの場合は android_app にする必要があります。
    package_name
    このステートメントが適用されるアプリの完全修飾パッケージ名。例: com.google.android.apps.maps
    sha256_cert_fingerprints
    この証明書が参照するアプリの証明書の大文字の SHA265 フィンガープリント ステートメントです。次のように、 openssl または Java の keytool を使用して計算できます。 <ph type="x-smartling-placeholder">
      </ph>
    • 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 アプリ署名を使用しているかどうかは、 Google Play Console デベロッパー アカウント Release > Setup > App Integrity未満追加すれば アプリの正しいデジタル アセット リンクの JSON スニペットも できます。

ステートメント リストの例

ウェブサイトとアプリの両方に関するステートメントを含むウェブサイト ステートメント リストの例を以下に示します。http://example.digitalassetlinks.org/.well-known/assetlinks.json

数十個以上のステートメントへのスケーリング

場合によっては、プリンシパルは多数の異なるステートメントを行いたいことがあります さまざまなターゲットに関する記述があり、 異なるプリンシパルを同じターゲット セットに割り当てます。たとえば、ウェブサイトは 国ごとに多数の異なるトップレベル ドメインで利用でき、 同じモバイルアプリについて言及するとよいでしょう

このような場合は、include ステートメントが役立ちます。このメカニズムを使用すると、さまざまなプリンシパルからリソースへのポインタを設定でき、 すべてのプリンシパルのステートメントを定義する、一元的な場所。

たとえば、一元化された場所を「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>

より詳しく

ステートメント リストの形式と基盤となるコンセプトの詳細については、仕様書をご覧ください。