没有确认提示的自定义URL方案(Swift)

我找到了两个从Safari网页打开我的应用程序的选项:在我的应用程序项目的Info.plist或Apple的Universal Linking中创建的自定义URL方案。 显然,自定义URL方案是最容易设置的方案,但我遇到的问题是Safari显示一个确认窗口,询问“打开myapp ?” 首先,用户必须在应用实际打开之前点击确定。 我希望我的应用程序在打开方案时自动打开,我被告知这样做的唯一方法是通过Universal Linking(如果不是这样,请纠正我)。 但是,如果这是真的,我想知道是否可以以任何方式将所需的apple-app-site-association文件放在http://域而不是https:// ? 根据官方的Apple文档,正确的通用链接的格式明确地使用https://开始,但我的域名无法在https://上加载,无需重定向几次,这会混淆我写入的Web服务在我的应用中执行其他任务。 这个问题之后我留下的两个主要问题:

1)使用自定义URL方案( myscheme:// )来解决确认提示是否真的不可能? 如果不是不可能,我该怎么做?

2)如果我必须使用Apple Universal Linking,我可以使用http://域吗? 如果是这样,我该怎么办? 现在,如果我加载通用链接,它只显示apple-app-site-association文件中的字典,我很确定不应该发生。 我被告知应该将NSUserActivity对象发送给我的app委托。 如何使用http://链接完成此操作?

如果不向用户显示警报,则无法触发自定义URI方案。 过去在iOS 8中可以使用,但iOS 9开始显示所有应用的警报。 iOS 10.3甚至已经扩展到App Store本身。 你不能绕过这个。 创建通用链接以替换此行为的URI方案,因此您确实需要使用它们。

根据您的描述,我相信您可能会误解Universal Links的工作方式。 要回答您首先询问的字面问题,不要将通用链接URL本身放在https://协议上,是的, 必须通过https://提供apple-app-site-association而不重定向。

但是 ,听起来您正在尝试为每个Universal Link提供apple-app-site-association文件的内容。 这不是正确的实现 – AASA文件https://example.com/apple-app-site-association上托管,iOS会在安装应用程序时自动检索它。 之后, example.com上符合AASA文件条件的任何URL都有资格使用Universal Links。

所有这些说, 你真的不想自己建立这个系统 。 我建议查看Firebase动态链接或Branch.io (完全披露:我在分支团队)。