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

ステートメントは、アセットリンク仕様で定義されているように、プリンシパルのよく知られた場所にある 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://user@password:www.google.com/

次の URL は一致しません

  • http://www.google.com/(スキームが間違っている
  • https://google.com/(ホスト名が一致しない
  • https://www.google.com:444/(ポートが一致しない

アプリ ターゲット

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