创建语句列表

Asset Link 规范所定义,语句托管在主帐号的众所周知的 JSON 编码语句列表中。一个语句列表包含一个或多个语句,主帐号只能有一个语句列表。

语句列表语法

请参阅语句列表语法

对账单列表位置

对账单列表托管在一个众所周知的位置,具体取决于主帐号的类型(做出声明的网站或应用)。

网站对账单列表

在网站上,对帐单列表是位于以下地址的文本文件:

schemedomain/.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/

以下网址不匹配:

  • http://www.google.com/(架构错误
  • https://google.com/(主机名不匹配)
  • https://www.google.com:444/(端口不匹配)

应用目标

对于应用,目标的证书哈希和软件包名称必须与该应用完全匹配。