【问题标题】:Is it possible to automatically accept Popups in SFSafariViewController?是否可以在 SFSafariViewController 中自动接受弹出窗口?
【发布时间】:2021-12-19 16:23:43
【问题描述】:

我需要在 iPad 应用程序中以SFSafariViewController 显示网站。 该网站(一个 SAP Analytics Cloud 站点)不断要求用户显示一个弹出窗口以进行身份​​验证,尽管设备首选项中的切换已设置为允许弹出窗口,但每次触发弹出窗口时都会显示此警报。 “允许”决定甚至不会持续到当前会话中。

--> 是否有可能自动允许它让用户看不到这个警报?

我不打算发布 AppStore,所以绝对欢迎任何 hacky 解决方案!

不幸的是,WebKit 到目前为止还没有工作,我也知道对话是系统触发的,并且是 Apple 方面的隐私要求,但在我的用例中,它一定不能显示出来。

【问题讨论】:

  • 这不是你应该做的事情。即使它不会发布到应用商店,Apple 也构建了这个窗口,因此它不能被呈现视图编辑。我很好奇你为什么需要使用弹出窗口,也许有改变这个要求的解决方案。
  • @thecoolwinter 准确地说,在 Safari 中打开的 SAP Analytics 云应用程序正在使用弹出窗口进行后台身份验证。它们会在几乎不引人注意的桌面版本上自动关闭。如果上面的对话框只显示一次并且记住该决定是可以接受的,但它每次都显示,这不是一个选项。

标签: ios swift safari popup sfsafariviewcontroller


【解决方案1】:

我曾经开发过一个访问 SAP Analytics Cloud 站点的应用,但遇到了同样的问题。起初我无法用SFSafariViewController 解决它,所以我决定使用WKWebView。最终,它以这种方式对我有用:

  • 为应用程序启用跨站点跟踪。为此,您必须在 Info.plist 中提供 NSCrossWebsiteTrackingUsageDescription 并添加 Settings.bundle 文件。 (见Using NSCrossWebsiteTrackingUsageDescription to request user disable ITP for WKWebView)。这样做,使用 Popups 的身份验证工作完美无缺。
  • WKUIDelegate 实现webView(webView: WKWebView, createWebViewWith configuration: WKWebViewConfiguration, for navigationAction: WKNavigationAction, windowFeatures: WKWindowFeatures) -> WKWebView? 函数以创建一个小的“Popup Webview”。在您的用例中,您可以将框架设置为 .zero 以使其不可见。只需确保您返回 WKWebView
  • WKUIDelegate 实现 webViewDidClose(_ webView: WKWebView) 以在身份验证完成后从超级视图中删除弹出窗口。

【讨论】:

    猜你喜欢
    • 2021-12-04
    • 1970-01-01
    • 2020-04-10
    • 1970-01-01
    • 1970-01-01
    • 2016-12-17
    相关资源
    最近更新 更多