Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在嵌入式SFSafariViewController中打开通用链接_Ios_Swift_Ios Universal Links_Sfsafariviewcontroller - Fatal编程技术网

Ios 在嵌入式SFSafariViewController中打开通用链接

Ios 在嵌入式SFSafariViewController中打开通用链接,ios,swift,ios-universal-links,sfsafariviewcontroller,Ios,Swift,Ios Universal Links,Sfsafariviewcontroller,Im目前正在集成一个安全登录提供程序,他们的SDK使用模式SFSafariView打开登录页面 这些要求不同于他们提供的标准要求,在标准要求中,我们需要有一个来宾按钮来关闭模式并链接到应用程序中的其他地方。-由于这不是标准的,SDK无法处理它 除非用户强制单击链接并选择在我们的应用程序中打开,否则链接将继续指向SFSAFari视图中的网页。这不是一个很好的用户体验,除了在网页上添加注释(不是很吸引人)之外,没有其他方法通知用户这一需求 问:我如何获得一个出现在SFSafariView中显示的ht

Im目前正在集成一个安全登录提供程序,他们的SDK使用模式SFSafariView打开登录页面

这些要求不同于他们提供的标准要求,在标准要求中,我们需要有一个来宾按钮来关闭模式并链接到应用程序中的其他地方。-由于这不是标准的,SDK无法处理它

除非用户强制单击链接并选择在我们的应用程序中打开,否则链接将继续指向SFSAFari视图中的网页。这不是一个很好的用户体验,除了在网页上添加注释(不是很吸引人)之外,没有其他方法通知用户这一需求

问:我如何获得一个出现在SFSafariView中显示的html网页上的链接,并将其发送到其打开的同一个应用程序。 注意-该应用程序具有关联的域,并在站点上正确设置了AASA文件

有用代码

//Sets up a SFSafariVC (use this code in a button to open a local html file with your link in)
guard let path = Bundle.main.path(forResource: "", ofType: "html") else { return }
let url = URL(fileURLWithPath: path)
let config = SFSafariViewController.Configuration()
let vc = SFSafariViewController(url: url, configuration: config)
present(vc, animated: true)

使用老式的deeplinks确实解决了我的问题

通过注册自定义URL协议

    <key>CFBundleURLTypes</key>
    <array>
        <dict>
        <key>CFBundleURLName</key>
          <string>com.appName.app</string>
          <key>CFBundleURLSchemes</key>
          <array>
            <string>appNameWebProtocol</string>
          </array>
        </dict>
    </array>
此解决方案的问题-在我们的特定情况下,此链接将出现在一个网站上,该网站可以在应用程序之外查看,也可以不安装。如果是这种情况,链接将不会做任何事情,因此我们的解决方案必须在网页上包含自定义脚本,以确定它应该在网页中显示哪个链接

func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
    
}