我正在设置深度链接,特别是应用程序链接,到目前为止,当用户输入所需的 urlhttps://myapp.com
并且他们安装了应用程序(应用程序已签名(时,它只会在浏览器中打开。
我已经能够设置自定义 URL 方案运行良好myappcustom://app
如果用户安装了应用程序,则按预期工作。
域的验证可在https://myapp.com/.well-known/assetlinks.json
进行,无需重定向
[{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "com.slatedev.notis",
"sha256_cert_fingerprints":
["E5:64:86:D6:EE:F8:1B:72:2F:55:B0:21:98:8B:0B:C8:C5:22:D4:98:08:7E:61:23:B1:A5:6A:1B:68:E0:C0:71"]
}
}]
我知道该文件必须可以通过以下约束从 Android 验证网页访问
- assetlinks.json 文件与内容类型 application/json 一起提供。我已经验证标头是否返回此内容类型
- assetlinks.json 文件必须可通过 HTTPS 连接访问,无论您应用的意图过滤器是否将 HTTPS 声明为数据方案。该文件可通过 https 获得
- assetlinks.json 文件必须在没有任何重定向的情况下可访问(没有 301 或 302 重定向(,并且机器人(您的机器人.txt必须允许抓取/.well-known/assetlinks.json(访问。不应有任何具有直接 https://myapp.com 访问权限的重定向。 我假设机器人可以访问 url,因为我还没有设置机器人.txt文件来阻止此时的访问
- 如果您的应用链接支持多个主机域,则必须在每个域上发布 assetlinks.json 文件。请参阅支持多个主机的应用链接。不支持多个主机域
- 不要在清单文件中发布具有公众可能无法访问的开发/测试 URL(例如只能通过 VPN 访问的任何 URL(的应用。在这种情况下,解决方法是配置构建变体,以便为开发版本生成不同的清单文件。虽然列出了多个域(测试版和生产域(,但它们可供公众使用
我试图找出可能的问题所在。myapp.com
是否需要在没有重定向的情况下可用?我会假设如果我与 https://链接连接,那不会成为问题,但也许点击验证的机器人不使用链接的https版本?
任何想法可能会阻止应用程序链接连接?
问题最终是我测试应用程序链接的方式。我正在使用代码笔来测试单击一个链接,该链接似乎应该有效,因为它适用于自定义 url 方案。
解决方案是使用正常的共享方法(如电子邮件或消息(并选择链接。然后,应用程序链接按预期工作。