声明列表是位于熟知位置的 JSON 编码文件或代码段。
声明列表的位置
如需了解此列表应存储在何处,请参阅创建语句列表。
语法
声明列表或代码段包含一个 JSON 数组,其中包含一个或多个网站或应用声明(以 JSON 对象的形式表示)。这些语句可以按任意顺序排列。一般语法如下:
[ { "relation": ["relation_string"], "target": {target_object} } , ... ]
- relation
- 一个包含一个或多个字符串的数组,用于描述声明的且与目标相关的一个或多个关系。请参阅已定义的关系字符串列表。示例:
delegate_permission/common.handle_all_urls
- 目标
- 相应声明所适用的目标资产。可用的目标类型:
- relation_extensions(可选)
-
您可以向声明添加可选的
relation_extensions
字段,以提供有关您要授予的权限和关联的更多信息。此字段应是一个对象,其中每个键都是一个关系字符串,而值是一个包含相应关系扩展的对象。请求这些声明的客户端需要更新,以遵循这些字段。例如,
delegate_permission/common.handle_all_urls
关系的relation_extensions
可能如下所示:{ "relation": ["delegate_permission/common.handle_all_urls"], "target": { "namespace": "android_app", "package_name": "com.example.app", "sha256_cert_fingerprints": ["..."] }, "relation_extensions": { "delegate_permission/common.handle_all_urls": {...} } }
当请求中设置了
return_relation_extensions=true
参数时,DAL API 支持在 API 调用中返回 relation_extensions。
声明列表示例
以下是一个包含网站和应用相关声明的网站声明列表示例: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>
更多信息
如需详细了解声明列表格式和底层概念,请参阅我们的规范文档。