是否可以在 SFSafariViewController 中自动接受弹出窗口?

Is it possible to automatically accept Popups in SFSafariViewController?

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

--> 是否有可能自动允许它以便用户看不到此警报?

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

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

我开发了一个访问 SAP Analytics Cloud 站点的应用程序,但遇到了同样的问题。我一开始用SFSafariViewController解决不了,所以我决定用WKWebView。最终,它以这种方式对我有用:

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