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

时间:2017-04-20 05:07:12

标签: ios swift ios-universal-links custom-scheme-url

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

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

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

2 个答案:

答案 0 :(得分:6)

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

从您的描述中,我相信您可能会产生误解Universal Links如何运作。要回答您首先询问的文字问题,没有通用链接网址本身 不需要apply plugin: 'realm-android' 协议,是的,https:// 必须< / em>在没有重定向的情况下通过apple-app-site-association投放。

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

所有这些都说Destructuring assignment。我建议查看Firebase动态链接或you really don't want to built out this system on your own(完全披露:我在分支团队中)。

答案 1 :(得分:1)

  

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

那是可能

1)将您的应用方案设置为"This is an example of big letter AAAAAAAAAAAAAAAAACCCCCCCCCCCCCCC failing the wrap "

2)创建以下html文件并将其放到网络中

myapp

3)使用safari打开html文件,然后“添加到主屏幕”

4)打开主屏幕图标,您的本机应用程序将启动

重点是元标记。

<html>
  <head>
    <link rel="apple-touch-icon" href="https://myapp.com/path/to/shortcut-icon.png" />
    <meta name="apple-mobile-web-app-capable" content="yes" />
  </head>
  <script>
    window.onload = function() {
      if (("standalone" in window.navigator) && window.navigator.standalone) {
        window.location.href = 'myapp://open'
      }
    }
  </script>
</html>

否则,将启动safari,并出现确认提示。