语句列表是位于已知位置的 JSON 编码文件或代码段。
对账单列表的位置
请参阅创建语句列表,了解此列表应存储在何处。
语法
语句列表或代码段包含一个 JSON 数组,该数组由一个或多个以 JSON 对象形式呈现的网站或应用语句构成。这些语句可以按任意顺序排列。常规语法如下:
[
{
"relation": ["relation_string"],
"target": {target_object}
} , ...
]
- relation
- 由一个或多个字符串组成的数组,用于描述所声明的关于目标的关系。请参阅已定义的关系字符串列表。示例:
delegate_permission/common.handle_all_urls
- 目标
- 此语句适用的目标资产。可用的目标类型:
-
网站定位条件
"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
。
- 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 应用签名,则在本地运行 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”。该文件可配置为包含与上述示例相同的内容。
如需设置从网站指向包含文件的指针,请将“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>
如需详细了解语句列表格式和基本概念,请参阅我们的规范文档。