AssetLinks 文件预期的流量和故障场景
AssetLinks file expected traffic and failure scenarios
我正在根据各种 guides and protocols 设置我的 Android 应用程序以使用 HTTP Web 链接,并已成功设置深层链接,其中包括从 [=10= 提供我的资产链接文件].一切都按预期工作。从操作的角度来看,我正在努力解决的问题是如何维护这个文件——特别是在更新和失败的情况下。
假设我有一些现有客户已经下载了我的应用程序并且正在正常使用网络链接。我更新我的 assetlink 文件并将新版本推送到我的服务器。我的客户何时可以获得更新的 assetlink 文件? OS 是否配置为在某些节奏或应用程序启动时检查更新?是否仅在应用更新或重新安装时?
同样,假设我的网站已关闭。新用户正在安装我的应用程序,OS 将无法关联我的域,当客户单击 HTTP 网络链接时,他们将不会深层链接到该应用程序。这是有道理的。但是在我从中断中恢复后,如果应用程序已经安装,客户什么时候可以获得他们的 assetlink 文件?
同样假设我上传了一个无效 assetlinks.json 文件。这是否会破坏现有客户在首次安装该应用程序时已经建立有效关联的当前 Web 链接?
了解这些问题最终将帮助我更好地解决客户问题并调整我应该期望从我的服务器看到的 assetlinks 文件的预期流量。
让我简要介绍一下应用程序链接的工作原理。我列出了我在玩应用程序链接时收集到的所有东西。另附上一篇非常好的文章,其中涵盖了有关以下内容的更多详细信息。
注册和更新应用程序链接有两个关键组成部分:Package manager
和 Intent Filter Verifier
。这些是工作流运行的常用步骤:
每次通过包管理器安装或更新应用程序时,都会生成一个名为 INTENT_FILTER_NEEDS_VERIFICATION
的意图。
Intent Filter Verifier
查找应用清单中定义的标签中指定的域。
对于为应用程序指定的每个 domain/hostname,IntentFilterVerfier 会尝试使用 API 调用为每个域获取语句。
- 域 google.com 的示例 API 调用看起来像 this
- 此 API 的文档被 google 小心地隐藏在 Digital Asset Links
根据 API 调用的结果,domain/hostname 被归入以下类别之一
undefined — apps which do not have link auto-verification enabled in their manifest
ask — apps which have failed verification (i.e. ask the user via the "Open with" dialog)
always — apps which have passed verification (i.e. always open this app for these domains)
never — apps which have passed verification, but have been disabled in the system settings
包管理器更新并应用该行为。
故障处理
如果任何域的提取语句 return 是无效响应,它将影响您现有的所有应用程序链接。
如果由于连接导致语句获取失败,Android 将重试获取语句。尽管文档中没有任何地方提到重试策略是什么,但我们可以放心地假设它是通过 JobScheduler 完成的,并且将是线性重试。
如果您打算对域属性进行更改,则需要在语句中 return 一个 Cache-Control
键 JSON.
您可以在这篇写得很好的文章中获得更多信息和调试工作流 Blog by Christopher Orr
我正在根据各种 guides and protocols 设置我的 Android 应用程序以使用 HTTP Web 链接,并已成功设置深层链接,其中包括从 [=10= 提供我的资产链接文件].一切都按预期工作。从操作的角度来看,我正在努力解决的问题是如何维护这个文件——特别是在更新和失败的情况下。
假设我有一些现有客户已经下载了我的应用程序并且正在正常使用网络链接。我更新我的 assetlink 文件并将新版本推送到我的服务器。我的客户何时可以获得更新的 assetlink 文件? OS 是否配置为在某些节奏或应用程序启动时检查更新?是否仅在应用更新或重新安装时?
同样,假设我的网站已关闭。新用户正在安装我的应用程序,OS 将无法关联我的域,当客户单击 HTTP 网络链接时,他们将不会深层链接到该应用程序。这是有道理的。但是在我从中断中恢复后,如果应用程序已经安装,客户什么时候可以获得他们的 assetlink 文件?
同样假设我上传了一个无效 assetlinks.json 文件。这是否会破坏现有客户在首次安装该应用程序时已经建立有效关联的当前 Web 链接?
了解这些问题最终将帮助我更好地解决客户问题并调整我应该期望从我的服务器看到的 assetlinks 文件的预期流量。
让我简要介绍一下应用程序链接的工作原理。我列出了我在玩应用程序链接时收集到的所有东西。另附上一篇非常好的文章,其中涵盖了有关以下内容的更多详细信息。
注册和更新应用程序链接有两个关键组成部分:Package manager
和 Intent Filter Verifier
。这些是工作流运行的常用步骤:
每次通过包管理器安装或更新应用程序时,都会生成一个名为
INTENT_FILTER_NEEDS_VERIFICATION
的意图。Intent Filter Verifier
查找应用清单中定义的标签中指定的域。对于为应用程序指定的每个 domain/hostname,IntentFilterVerfier 会尝试使用 API 调用为每个域获取语句。
- 域 google.com 的示例 API 调用看起来像 this
- 此 API 的文档被 google 小心地隐藏在 Digital Asset Links
根据 API 调用的结果,domain/hostname 被归入以下类别之一
undefined — apps which do not have link auto-verification enabled in their manifest ask — apps which have failed verification (i.e. ask the user via the "Open with" dialog) always — apps which have passed verification (i.e. always open this app for these domains) never — apps which have passed verification, but have been disabled in the system settings
包管理器更新并应用该行为。
故障处理
如果任何域的提取语句 return 是无效响应,它将影响您现有的所有应用程序链接。
如果由于连接导致语句获取失败,Android 将重试获取语句。尽管文档中没有任何地方提到重试策略是什么,但我们可以放心地假设它是通过 JobScheduler 完成的,并且将是线性重试。
如果您打算对域属性进行更改,则需要在语句中 return 一个
Cache-Control
键 JSON.
您可以在这篇写得很好的文章中获得更多信息和调试工作流 Blog by Christopher Orr