检测 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 浏览器(以及其他 SFSafariViewControllers,包括 cookie 和密码)共享数据。唯一的原因是使用它(以及最初创建它的原因)是用于登录 / SSO 等。如果您不需要,请使用 UIWebViewWKWebView。如果您需要这些,标准方式自动退出SFSafariViewController(例如在成功登录后)是使用自定义 URL 方案。

以上是关于检测 SFSafariViewController 中的 URL 更改的主要内容,如果未能解决你的问题,请参考以下文章

使用 SFSafariViewController 下载文档

使用 SFSafariViewController 的主要优势是啥?

如何在 SwiftUI 中使用 SFSafariViewController?

SFSafariViewController 显示任何 URL 的空白屏幕

SFSafariViewController 关闭后的背景音频

FBSDK 登录 - SFSafariViewController 已禁用?