检测 SFSafariViewController 中的 URL 更改
Posted
技术标签:
【中文标题】检测 SFSafariViewController 中的 URL 更改【英文标题】:Detect URL change in SFSafariViewController 【发布时间】:2017-02-12 20:13:56 【问题描述】:我有一个 SFSafariViewController,当用户点击我的应用程序中的链接时它会打开。我需要检测 URL 何时更改,以便在更改时,应用程序会显示警报。我们如何检测 SFSafariViewController 中的 URL 变化?
【问题讨论】:
【参考方案1】:你不能这样做。
SFSafariViewController
旨在将用户发送到浏览器,而不用太在意她去了哪里,但是当她完成后,她会立即回到您的应用程序中,而不会丢失任何上下文。您可以自定义的东西很少。
official docs 提及(强调我的):
如果您的应用允许用户从 Internet 上的任何位置查看网站,请使用 SFSafariViewController 类。如果您的应用自定义、与交互或控制 Web 内容的显示,请使用 WKWebView 类。
使用WKWebView
提供良好的浏览体验将需要更多工作(尤其是一些 UI),但您可以控制。哥哥姐姐UIWebView
也是如此。如果您不知道该使用哪个,this comparison 可能会有所帮助,尽管自撰写本文以来,WKWebView
方面可能有所改进。
【讨论】:
请注意SFSafariViewController
和其他人之间的一个很大区别:SFSafariViewController
与设备上的常规 Web 浏览器(以及其他 SFSafariViewController
s,包括 cookie 和密码)共享数据。唯一的原因是使用它(以及最初创建它的原因)是用于登录 / SSO 等。如果您不需要,请使用 UIWebView
或 WKWebView
。如果您需要这些,标准方式自动退出SFSafariViewController
(例如在成功登录后)是使用自定义 URL 方案。以上是关于检测 SFSafariViewController 中的 URL 更改的主要内容,如果未能解决你的问题,请参考以下文章
使用 SFSafariViewController 下载文档
使用 SFSafariViewController 的主要优势是啥?
如何在 SwiftUI 中使用 SFSafariViewController?
SFSafariViewController 显示任何 URL 的空白屏幕