SfSafariViewController 和共享 cookie 存储

Posted

技术标签:

【中文标题】SfSafariViewController 和共享 cookie 存储【英文标题】:SfSafariViewController and shared cookie storage 【发布时间】:2019-10-23 14:30:07 【问题描述】:

SFSafariViewController(SVC) 是在 ios 9 中引入的,SVC 可以从 Mobile safari 而不是从应用程序读取 cookie,它可以写入 cookie,它可以由 Mobile Safari 而不是移动应用程序访问。

上述行为在 iOS 10 之前是相同的。

从 iOS 11 开始 SVC 无法读取 Mobile Safari 的 cookie。

那么,从 iOS 11 开始,cookie 共享的内容在哪里?

SVC 在哪里存储它来自 iOS 11 的 cookie?

SVC 是否将 cookie 存储在启动应用程序本身中?

如果是,app中的webview(UIWebview/Wkwebview)能否读取SVC写的cookies

如果是,SVC能否读取Webview写的cookies

如果没有,SVC 是否可以读取它在上次会话期间写入的 cookie

或 SVC 更像是 Safari 的隐身版本,它不记得以前的会话,并且无法访问应用程序的 webview 和 Mobile Safari 的 cookie。

【问题讨论】:

【参考方案1】:

SVC 在哪里存储它来自 iOS 11 的 cookie?

cookies/其他数据目前保存在SystemData/com.apple.SafariViewService/Library 的容器下,然后保存在CookiesWebkit/WebsiteData 下 - 这可能会在未来的版本中更改!

SVC 是否将 cookie 存储在启动应用程序本身中?

是的,在您的容器中

如果是,应用程序中的 webview(UIWebview/Wkwebview) 是否可以读取 cookie SVC写的

不是开箱即用,您可以使用自定义 URLRequest 加载 Web 视图,然后让它读取这些文件,我不推荐它,因为当前保存的格式没有记录,将来可能会更改。

如果没有,SVC 是否可以读取它在上次会话期间写入的 cookie

是的,SFSafariViewController 维护它来自以前会话的数据,它对您的应用程序是私有的,因为它存储在您的容器中。

【讨论】:

以上是关于SfSafariViewController 和共享 cookie 存储的主要内容,如果未能解决你的问题,请参考以下文章

laravel 分页和共多少条

使用 SFSafariViewController 下载文档

来自集群和共现因素列表的维恩图

使用 SFSafariViewController 的主要优势是啥?

如何在 SwiftUI 中使用 SFSafariViewController?

SFSafariViewController 显示任何 URL 的空白屏幕