语句列表语法

语句列表是位于某个知名位置的 JSON 编码文件或代码段。

对账单列表的位置

如需了解应将此列表存储在何处,请参阅创建语句列表

语法

声明列表或代码段由一个 JSON 数组组成,其中包含一个或多个网站或应用声明(以 JSON 对象的形式)。这些语句可以按任意顺序排列。一般语法如下:

[
  {
    "relation": ["relation_string"],
    "target": {target_object}
  } , ...
]
关系
由一个或多个字符串组成的数组,用于描述所声明的关于目标的关系。请参阅已定义的关系字符串列表。示例delegate_permission/common.handle_all_urls
目标
此语句适用的目标资产。可用的目标类型: <ph type="x-smartling-placeholder">
    </ph>
  • "target": {
      "namespace": "web",
      "site": "site_root_url"
    }
    命名空间
    对于网站,此值必须为 web
    网站
    作为语句目标的网站的 URI,格式为 http[s]://<hostname>[:<port>],其中 <hostname> 是完全限定的,如果对 HTTP 使用端口 80,对 HTTPS 使用端口 443,则必须省略 <port>。目标网站只能是根网域;而不能局限于某个特定的子目录;该根目录下的所有目录都将匹配。子网域不应被视为匹配,也就是说,如果声明文件托管在 www.example.com 上,则不应将 www.puppies.example.com 视为匹配网域。如需了解与网站目标匹配相关的规则和示例,请参阅“目标”文档示例:http://www.example.com
  • "target": {
      "namespace": "android_app",
      "package_name": "fully_qualified_package_name",
      "sha256_cert_fingerprints": ["cert_fingerprint"]
    }
    命名空间
    对于 Android 应用,此值必须为 android_app
    package_name
    此语句适用的应用的完全限定软件包名称。示例:com.google.android.apps.maps
    sha256_cert_fingerprints
    此声明适用的应用的证书的大写 SHA265 指纹。您可以使用 openssl 或 Java keytool 进行计算,如下所示:
    • openssl x509 -in $CERTFILE -noout -fingerprint -sha256
    • keytool -printcert -file $CERTFILE | grep SHA256
    示例["14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5"]

    如果您的应用使用的是 Play 应用签名,则本地运行 keytoolopenssl 生成的证书指纹通常与用户设备上的证书指纹不匹配。您可以在以下位置验证您是否为应用使用了 Play 应用签名功能: Play 管理中心开发者账号 低于 Release > Setup > App Integrity;如果有, 您还可以在同一页面上找到您应用的正确 Digital Asset Links JSON 代码段 页面。

语句列表示例

下面是一个网站语句列表示例,其中包含有关网站和应用的语句:http://example.digitalassetlinks.org/.well-known/assetlinks.json

扩展到数十个或更多语句

在某些情况下,主账号可能希望创建许多不同的语句 或者需要就不同的目标发表声明, 向同一组目标分配不同的主账号。例如,某个网站可能在许多不同的国家/地区顶级域名上提供,并且所有这些域名都可能需要针对同一款移动应用做出声明。

对于这些情况,include 语句会很有帮助。 使用此机制,您可以设置来自许多不同主账号的指针 一个中心位置,用于定义所有主账号的语句。

例如,您可以决定中央位置应为 `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>

更多信息

如需详细了解语句列表格式和底层概念,请参阅我们的规范文档