通用深层链接在第一次尝试时无法打开应用

时间:2017-06-06 01:55:24

标签: ios deep-linking ios-universal-links

当应用安装时,我看到了https://example.com/.well-known/apple-app-site-association的请求,该请求获得了200响应,并带有正确的json响应。

奇怪的事情1:然后应用继续尝试请求/ apple-app-site-association失败,因为根目录中没有该文件。如果已经有.well知道的文件,为什么它会回退到这个文件?

应用程序完成打开后,我可以进入Notes或其他内容并点击深层链接,例如https://example.com/some/path,这将在野生动物园中打开。

奇怪的事情2:在网站开放之前,有几个请求.well-known / apple-app-site-association和/ apple-app-site-association。我很确定.well已知的请求是第一位的,而且.well已知的版本还有一个版本而不是根本版本。

之后,我现在可以回到Notes并点击深层链接,现在它将正确打开应用程序。一切都是对的。

任何想法可能是错误的第一个.well已知的响应导致它们无法工作并生成回退请求?有这个问题或有任何想法的其他人吗?

以下是Charles编辑的截图(应用安装在11:24:18完成),以及来自.well-known / apple-app-site-association的编辑回复。

enter image description here

HTTP/1.1 200 OK
Content-Type: application/json
Last-Modified: Tue, 06 Jun 2017 00:50:40 GMT
Accept-Ranges: bytes
ETag: "[redacted]"
Content-Length: 156
Connection: Keep-alive

{
    "applinks": {
        "apps": [],
        "details": [
            {
                "appID": "[redacted].com.[redacted]",
                "paths": [ "*" ]
            }
        ]
    }
}

3 个答案:

答案 0 :(得分:3)

这是您遇到的问题,因为您正在代理连接(使用Charles Proxy - 但任何代理都会导致问题)。 Apple检测到连接已被代理,并且不信任下载的文件。

在实际情况中,您实际上不会遇到此问题,因为您的用户不会使用Charles Proxy。

答案 1 :(得分:0)

iOS每次都会抓取两个位置。如果两个文件不匹配,我不确定是否存在已定义的首选顺序,但我知道在这种情况下你会遇到奇怪的行为。尽量避免它。

看起来确实存在某种配置问题,导致文件在第一次尝试时无法正确验证。由于你已经编辑了所有可能让我调查的细节,遗憾的是我在那里得不到多少帮助。

初始失败后重新抓取链接点击是新的 - 我之前没有见过这个。它必须是最近添加的,以帮助捕获否则会导致Universal Link行为中断的情况(安装期间的网络拥塞等)。如果您能够调试初始刮擦错误,则应该停止发生。

答案 2 :(得分:0)

Why would it fall-back to this file if it already has the .well-known one?

Apple文档建议在失败时尝试使用根文件夹。

Handoff first searches for the file in the .well-known subdirectory (for example, https://example.com/.well-known/apple-app-site-association), falling back to the top-level domain if you don’t use the .well-known subdirectory.

https://developer.apple.com/library/archive/documentation/UserExperience/Conceptual/Handoff/AdoptingHandoff/AdoptingHandoff.html#//apple_ref/doc/uid/TP40014338-CH2-SW10