如何解决在嵌入式SFSafariViewController中打开通用链接
我目前正在集成安全登录提供程序,他们的SDK使用模式SFSafariView打开登录页面。
需求与标准提供的需求不同,在需求中,我们需要一个来宾按钮来关闭模式并链接到应用程序中的其他位置。 -由于这不是标准操作,因此SDK无法处理。
除非用户强行单击该链接并选择在我们的应用程序中打开,否则该链接将继续显示到SFSafariView中的网页。这不是很好的用户体验,除了在网页上添加注释(不是很吸引人)之外,没有其他方法可以通知用户这种需求。
Q-如何获得显示在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)
解决方法
使用老式的深层链接确实解决了我的问题。
通过注册自定义URL协议
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLName</key>
<string>com.appName.app</string>
<key>CFBundleURLSchemes</key>
<array>
<string>appNameWebProtocol</string>
</array>
</dict>
</array>
然后使用形式为appNameWebProtocol:// link / destination的链接,SFSafariViewController始终将此链接传递给应用程序。
这是通过appDelegate方法获取的
func application(_ app: UIApplication,open url: URL,options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
}
该解决方案存在问题-在我们特定的情况下,可以在可以在应用外部查看且未安装该应用的网站上找到此链接。如果是这种情况,则该链接不会执行任何操作,因此我们的解决方案必须在网页上包含自定义脚本,以确定该链接应出现在webPage中。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。