在我的应用程序中,我正在实现一项功能,在某些情况下,我需要使用 SFSafariViewController 打开我的网站。为此,我也不希望用户在 Web 应用程序中再次登录,因此在我打开 SFSafariViewController 之前,我想传递一些 token 、邮件和其他所需信息。这是否可行并且允许我使用浏览器缓存。
最佳答案
SFSafariViewController
您可以配置的内容非常有限,如文档所示:https://developer.apple.com/documentation/safariservices/sfsafariviewcontroller .出于安全和隐私原因,Apple 有意将 cookie 和 safari 配置与使用它们的应用分开。
我不知道这是否正是您所看到的,但我遇到了类似的问题,如果用户通过 SFSafariViewControler
登录,然后注销(不使用 SFSafariViewController
),然后再次登录,它不会要求登录/通过,因为它仍然缓存在浏览器中。
几乎仅有的 2 个选项是:
- 让注销流程在
SFSafariViewController
中进行,以便您可以通过这种方式清除 cookie。 - Apple 有一个新的身份验证流程类
ASWebAuthenticationSession
(文档 here),它有一个您可以设置的新属性,名为prefersEphemeralWebBrowserSession
,它实际上以私有(private)模式打开浏览器。这可以防止任何 cookie 存储在浏览器中。唯一的缺点是prefersEphemeralWebBrowserSession
属性仅在 iOS 13+ 中可用。
如果这与您面临的问题相同,并且您可以将您的应用限制为 iOS 13+,那么我建议使用 ASWebAuthenticationSession
路由,否则您可能需要寻找其他解决方案。
关于ios - 使用 Swift iOS 在 SFSafariViewController 中配置浏览器缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59768257/