iOS AppLinks 仅在邮件应用程序中不起作用

iOS AppLinks only not working from mail app

我们正在创建一个新的应用程序,我在使用应用程序 links 时遇到了一些问题。

所以我添加了权利,并在我的服务器上托管了“.well-known/apple-app-site-association”文件,这似乎一切都很好。

然后我正在测试应用程序link,方法是使用以下命令在我的模拟器上触发它们:/usr/bin/xcrun simctl openurl booted "https://links.domain.com/path/token" 并很好地触发我的应用程序。

然后我开始在真实设备上进行测试,突然间它不再工作了,我在这些设备上使用默认的邮件应用程序,这就是问题所在。

如果我将 link 放入笔记(Notes 应用程序)中,它会打开我的应用程序。如果我从 GMail 应用程序打开我的电子邮件,它会启动我的应用程序,但是来自同一个 gmail 帐户但在 Apple Mail 应用程序内部的完全相同的电子邮件不会做任何事情...

我现在在 iOS 13 和 iOS14 上都试过了。

托管的 apple-app-site-association 文件的内容如下所示:

{
    "applinks": {
        "apps": [],
        "details": [
            {
                "appID": "0000X0XXXX.com.domain.appname",
                "paths": ["*"]
            }
        ]
    },
    "webcredentials": {
        "apps": [ "0000X0XXXX.com.domain.appname" ]
    }
}

我们欢迎任何关于我们下一步可以尝试的想法。我唯一能想到的是邮件应用程序会额外检查你的应用程序是否在 AppStore 上,但这有点奇怪,不是吗?!

好的,我确实找到了问题并修复了...其实并不难,我不小心碰到了...

Apple 似乎在解析 HTML 方面做得很糟糕,尤其是 link 的 href 属性。虽然我找不到任何其他行为相同的客户端,但似乎如果您不将方案(http 或 https)放在 url 前面(所以我使用的不是 https://google.com只需将 google.com) 提供给 href 属性,然后 Apple 就可以利用它做出自己的东西:x-webdoc://30E09690-F388-4ED2-BB46-14DC829B974C/google.com。 我可以在 Apple Mail 应用程序上发现这个问题,但是在我遇到问题的 iPhone 上,它甚至没有被识别为 link,所以他们自己的应用程序之间的行为似乎有点不同.

最后,我的错误是没有将 https:// 放在我自动生成的 URI 的前面。但是我确实认为 Apple 在构建 link HTML 标签方面做得很差。