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

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

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

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

構文

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

[
  {
    "relation": ["relation_string"],
    "target": {target_object}
  } , ...
]
relation
target に関して宣言される関係を記述する 1 つ以上の文字列の配列。定義済みの関係文字列のリストをご覧ください。例: delegate_permission/common.handle_all_urls
ターゲット
このステートメントが適用されるターゲット アセット。使用可能なターゲット タイプ:
relation_extensions(省略可)

ステートメントにオプションの relation_extensions フィールドを追加して、付与する権限と関連付けに関する詳細情報を提供できます。このフィールドは、各キーがリレーション文字列で、値がそのリレーションの拡張機能を含むオブジェクトであるオブジェクトにする必要があります。これらのステートメントをリクエストするクライアントは、これらのフィールドを尊重するように更新する必要があります。

たとえば、delegate_permission/common.handle_all_urls 関係の relation_extensions は次のようになります。

  {
    "relation": ["delegate_permission/common.handle_all_urls"],
    "target": {
      "namespace": "android_app",
      "package_name": "com.example.app",
      "sha256_cert_fingerprints": ["..."]
    },
    "relation_extensions": {
      "delegate_permission/common.handle_all_urls": {...}
    }
  }
  

DAL API は、リクエストで return_relation_extensions=true パラメータが設定されている場合、API 呼び出しで relation_extensions を返すことをサポートしています。

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

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

数十以上のステートメントにスケーリングする

プリンシパルが異なるターゲットについて多くの異なるステートメントを作成したい場合や、異なるプリンシパルから同じターゲットのセットにステートメントを発行する必要がある場合があります。たとえば、ウェブサイトが国別のトップレベル ドメインで多数利用可能であり、それらすべてが同じモバイルアプリについて言及したい場合があります。

このような場合は、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>

より詳しく

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