语句列表是位于某个知名位置的 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
-
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 应用签名功能:
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>
如需详细了解语句列表格式和底层概念,请参阅我们的规范文档。