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

Nik*_*iki 1 xcode browser-cache ios swift sfsafariviewcontroller

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

wil*_*lc0 5

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

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

几乎唯一的两个选择是:

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

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