ios - 使用 Swift iOS 在 SFSafariViewController 中配置浏览器缓存

标签 ios swift xcode browser-cache sfsafariviewcontroller

在我的应用程序中,我正在实现一项功能,在某些情况下,我需要使用 SFSafariViewController 打开我的网站。为此,我也不希望用户在 Web 应用程序中再次登录,因此在我打开 SFSafariViewController 之前,我想传递一些 token 、邮件和其他所需信息。这是否可行并且允许我使用浏览器缓存。

最佳答案

SFSafariViewController 您可以配置的内容非常有限,如文档所示:https://developer.apple.com/documentation/safariservices/sfsafariviewcontroller .出于安全和隐私原因,Apple 有意将 cookie 和 safari 配置与使用它们的应用分开。

我不知道这是否正是您所看到的,但我遇到了类似的问题,如果用户通过 SFSafariViewControler 登录,然后注销(不使用 SFSafariViewController),然后再次登录,它不会要求登录/通过,因为它仍然缓存在浏览器中。

几乎仅有的 2 个选项是:

  1. 让注销流程在 SFSafariViewController 中进行,以便您可以通过这种方式清除 cookie。
  2. Apple 有一个新的身份验证流程类 ASWebAuthenticationSession(文档 here),它有一个您可以设置的新属性,名为 prefersEphemeralWebBrowserSession,它实际上以私有(private)模式打开浏览器。这可以防止任何 cookie 存储在浏览器中。唯一的缺点是 prefersEphemeralWebBrowserSession 属性仅在 iOS 13+ 中可用。

如果这与您面临的问题相同,并且您可以将您的应用限制为 iOS 13+,那么我建议使用 ASWebAuthenticationSession 路由,否则您可能需要寻找其他解决方案。

关于ios - 使用 Swift iOS 在 SFSafariViewController 中配置浏览器缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59768257/

相关文章:

java - iOS 的 Java 编程有什么进展吗?

swift - macOS 应用程序中的表单验证问题

ios - 带有标题的 TableView 在触底之前反弹

xcode - 构建系统范围的 macOS 文本编辑工具

ios - 带有Xcode 5.1.1和OS X 10.10错误的CocoaPods

objective-c - 当返回值是类型转换的父类时,对方法的返回值进行类型转换?

iphone - 应用在关闭时不会自动关闭

ios - 新应用和应用更新必须使用公共(public) (GM) 版本构建

ios - 使用 https ://asmx-based service with Monotouch

ios - 使用 pushViewController 传递数据?