ステートメント リストを作成する

ステートメントは、アセットリンク仕様で定義されているように、プリンシパルのよく知られた場所にある JSON エンコードのステートメント リストでホストされます。ステートメント リストには 1 つ以上のステートメントが含まれ、プリンシパルに指定できるステートメント リストは 1 つのみです。

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

ステートメント リストの構文をご覧ください。

明細書の一覧の場所

ステートメント リストは、プリンシパルのタイプ(ステートメントを作成するウェブサイトやアプリ)に応じて既知の場所にホストされています。

ウェブサイト ステートメント リスト

ウェブサイトでは、明細書リストは次のアドレスにあるテキスト ファイルです。

scheme://domain/.well-known/assetlinks.json

.well-known フォルダ名のドットに注意してください。

HTTP 200 以外のサーバーからのレスポンスはエラーとして処理され、ステートメント ステートメントが空になります。HTTPS の場合、信頼できるルートリストで検証可能な証明書チェーンがない接続でも、空のステートメント リストが返されます。

サンプル

ウェブサイト上のステートメント リストの例: http://example.digitalassetlinks.org/.well-known/assetlinks.json

Android アプリのステートメント リスト

Android アプリのステートメント リストは、ウェブサイトのステートメント ファイルと同じ構文の JSON スニペットですが、strings.xml ファイルに埋め込まれ、次のようにマニフェストで参照されます。

AndroidManifest.xml で次のように追加します。

<manifest>
  <application>
    ...
    <meta-data android:name="asset_statements" android:resource="@string/asset_statements" />
    ...
  </application>
</manifest>

res/values/strings.xml 内:

<resources>
  ...
  <string name="asset_statements">
    ... statement list ...
  </string>
</resources>

サンプル

アプリとの現在地の共有をサポートする Android アプリの res/values/strings.xml スニペットの例(現在、Android 機能はサポート対象外)。

<resources>
    ...
    <string name="asset_statements">
      [{
        \"relation\": [\"delegate_permission/common.share_location\"],
        \"target\": {
          \"namespace\": \"web\",
          \"site\": \"https://example.com\"
        }
      }]
    </string>
</resources>

ターゲットの照合

すべてのステートメントはターゲットに関するものです。ステートメントを利用するときは、ステートメントのターゲットと実際のエンティティを一致させる必要があります。ステートメント ターゲットがエンティティと一致する場合は、ステートメントが適用されます。ターゲットが特定のエンティティに一致するかどうかを判断するためのルールは次のとおりです。

ウェブサイト ターゲット

ウェブサイトの場合、サイトのスキーム、ホスト、ポートは正確に一致している必要があります。HTTP と HTTPS(それぞれ 80 および 443)のデフォルトのポートは暗黙的に想定され、文のターゲットが http://www.example.com:80 を記述している場合、ウェブサイト http://www.example.com は一致と見なされます。

サンプル

次のステートメント ターゲットの場合

"target": {
  "namespace": "web",
  "site": "https://www.google.com"
}

次の URI は一致します。

  • https://www.google.com/
  • https://www.google.com:443/
  • https://www.google.com/foo
  • https://www.google.com/foo?bar
  • https://www.google.com/foo#bar
  • https://[ユーザー名]@[パスワード]:www.google.com/

次の URL は一致しません

  • http://www.google.com/(間違ったスキーム
  • https://google.com/(ホスト名が一致しません)
  • https://www.google.com:444/(ポートが一致しません

アプリのターゲット

アプリでは、ターゲットの証明書ハッシュとパッケージ名がアプリケーションと完全に一致している必要があります。