语句列表是位于已知位置的 JSON 编码文件或代码段。
对账单列表的位置
如需了解应存储此列表的位置,请参阅创建语句列表。
语法
语句列表或代码段由一个或多个 JSON 数组(作为 JSON 对象)构成。这些语句可以按任何顺序排列。一般语法如下:
[
{
"relation": ["relation_string"],
"target": {target_object}
} , ...
]
- 关系
- 一个或多个字符串的数组,用于描述有关目标的关系。请参阅定义的关系字符串列表。示例:
delegate_permission/common.handle_all_urls
- target
- 此语句适用的目标素材资源。可用的目标类型:
-
网站目标
"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
-
Android 应用目标
"target": {
"namespace": "android_app",
"package_name": "fully_qualified_package_name",
"sha256_cert_fingerprints": ["cert_fingerprint"]
}
- 命名空间
- 对于 Android 应用,必须为
android_app
。
- 软件包名称
- 此语句应用到的应用的完全限定软件包名称。示例:
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 应用签名,则通过在本地运行 keytool
或 openssl
而生成的证书指纹通常与用户设备上的证书指纹不匹配。您可以在 Play 管理中心开发者帐号的 Release > Setup > App Integrity 下验证您是否为应用使用了 Play 应用签名功能;如果使用的话,您还会在同一页面中找到适用于您应用的正确 Digital Asset Links JSON 代码段。
对账单列表示例
下面是一个网站声明列表示例,其中包含有关网站和应用的声明:http://example.digitalassetlinks.org/.well-known/assetlinks.json
扩容到数十个或更多语句
在某些情况下,主帐号可能需要针对不同的目标做出许多不同的语句,或者可能需要将不同主帐号上的语句发布到同一组目标。例如,一个网站可能在多个不同国家/地区的顶级网域上提供,并且所有这些网域可能需要对同一移动应用做出说明。
对于这种情况,include 语句会很有帮助。使用这种机制,您可以设置从多个不同主帐号指向一个中心位置的指针,从而为所有主帐号定义语句。
例如,您可以决定中心位置应为 `https://example.com/includedstatements.json`。此文件可配置为包含与上例相同的内容。
如需设置从网站指向 include 文件的指针,请将 `https://example.com/.well-known/assetlinks.json` 更改为:
[{
"include": "https://example.com/includedstatements.json"
}]
如需设置从 Android 应用指向 include 文件的指针,请将 `res/values/strings.xml` 更改为:
<resources>
...
<string name="asset_statements">
[{
\"include\": \"https://example.com/includedstatements.json\"
}]
</string>
</resources>
我们在规范文档中对语句列表格式和基本概念进行了更详细的说明。