首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AssetLinks文件期望的通信量和故障场景

AssetLinks文件期望的通信量和故障场景
EN

Stack Overflow用户
提问于 2021-10-27 19:25:33
回答 1查看 202关注 0票数 0

我正在根据不同的导轨协议设置我的安卓应用程序来处理HTTP链接,并成功地设置了deeplinks,其中包括从/.well-known/assetlinks.json提供的资产链接文件。一切都如期而至。从操作的角度来看,我正在挣扎的是如何维护这个文件--特别是在更新和失败场景中。

假设我的现有客户已经下载了我的应用程序,并且使用了很好的网络链接。我更新资产链接文件并将新版本推送到服务器。我的客户什么时候得到更新的资产链接文件?操作系统是否配置为检查某些cadence或app启动时的更新情况?它是只在应用程序更新或重新安装?

同样的,想象一下我的网站被关闭了。新用户正在安装我的应用程序,操作系统将无法与我的域名相关联,当客户单击HTTP网络链接时,他们将不会深入到应用程序中。这说得通。但是,在我从中断中恢复之后,如果应用程序已经安装,客户什么时候才能获得他们的资产链接文件?

同样,假设我上传了一个无效的assetlinks.json文件。这是否会破坏现有客户在首次安装应用程序时已经拥有有效关联的当前网页链接?

理解这些问题最终将有助于我更好地解决客户问题,并调优我期望从服务器上看到的资产链接文件的预期流量。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-01 17:08:05

让我简要介绍一下应用程序链接是如何工作的。我列出了所有的事情,我已经学会了在玩应用程序链接。还附上了一篇非常好的文章,其中详细介绍了以下内容。

注册和更新应用链接有两个关键组件:Package managerIntent Filter Verifier。以下是运行工作流的通常步骤:

  1. 每次通过包管理器安装或更新应用程序时,都会生成名为INTENT_FILTER_NEEDS_VERIFICATION的意图。
  2. Intent Filter Verifier查找应用程序清单中定义的标记中指定的域。
  3. 对于为应用程序指定的每个域/主机名,IntentFilterVerfier尝试使用API调用获取每个域的语句。
代码语言:javascript
运行
复制
- A sample API call for the domain google.com looks like [this](https://digitalassetlinks.googleapis.com/v1/statements:list?source.web.site=https://google.com&relation=delegate_permission/common.handle_all_urls)
- The APIs documentation of this is carefully hidden by google at [Digital Asset Links](https://developers.google.com/digital-asset-links/reference/rest/v1/statements/list)
  1. 根据API调用的结果,将域/主机名分类为以下几个桶之一 未定义的应用程序--在其清单问题中没有启用链接自动验证的应用程序--验证失败的应用程序(即通过“打开与使用”对话框询问用户)--通过验证的应用程序(即始终为这些域打开此应用程序)--通过验证但在系统设置中被禁用的应用程序。
  2. Package更新并应用此行为。

故障处理

  • 如果任何域的fetch语句返回无效的响应,它将影响所有现有的应用程序链接。
  • 在case语句fetch由于连接而发生失败时,Android将重试获取语句。虽然在文档中没有提到什么是重试策略,但是我们可以安全地假设它是通过JobScheduler完成的,并且是线性重试。
  • 如果计划对域属性进行更改,则需要在语句JSON中返回一个Cache-Control键。

您可以在这个编写得很好的克里斯托弗·奥尔的博客中获得更多信息和调试工作流。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69744408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档