ステートメントは、アセットリンクの仕様で定義されているように、プリンシパルの既知の場所にある 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/(ポートが一致しない)
アプリのターゲット
アプリの場合、ターゲットの証明書ハッシュとパッケージ名がアプリと完全に一致している必要があります。