根据Apple文档:
... cookie在所有应用程序之间共享,并且跨进程边界保持同步。
但是有 iOS Note :
在iOS中的应用程序之间不共享Cookie。
所以基本上我不能在我的应用程序中使用Safari中的cookie吗?
答案 0 :(得分:4)
iOS安全沙箱禁用使用WKWebView
的应用之间的Cookie共享,因为您已经发现了iOS注释,并且没有办法解决这个问题。您可以使用WKWebView
在应用内的多个WKProcessPool
之间共享Cookie。
通过将SFSafariViewController
(iOS 8及以下版本,您需要切换到Safari)与自定义网址方案相结合,有一种方法可以将Cookie数据从Safari传递到您的应用。
这种方法的基本原理是:
SFSafariViewController
加载Safari视图控制器(或针对iOS8及更低版本启动Safari [[UIApplication sharedApplication] openURL:url]
)url
处的脚本会尝试加载您传递Cookie数据的自定义网址方案,例如my-custom-scheme:cookie=value
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
然而,用户将看到Safari View Controller弹出然后关闭(或在iOS8及更低版本的应用程序之间切换)。没有一种沉默的做法(额外的:有办法迫使主窗口高于SFSafariViewController
,但Apple并不支持这种方式。