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
的容器下,然后保存在Cookies
和Webkit/WebsiteData
下 - 这可能会在未来的版本中更改!
SVC 是否将 cookie 存储在启动应用程序本身中?
是的,在您的容器中
如果是,应用程序中的 webview(UIWebview/Wkwebview) 是否可以读取 cookie SVC写的
不是开箱即用,您可以使用自定义 URLRequest
加载 Web 视图,然后让它读取这些文件,我不推荐它,因为当前保存的格式没有记录,将来可能会更改。
如果没有,SVC 是否可以读取它在上次会话期间写入的 cookie
是的,SFSafariViewController
维护它来自以前会话的数据,它对您的应用程序是私有的,因为它存储在您的容器中。
【讨论】:
以上是关于SfSafariViewController 和共享 cookie 存储的主要内容,如果未能解决你的问题,请参考以下文章
使用 SFSafariViewController 下载文档
使用 SFSafariViewController 的主要优势是啥?