WKWebView是否使用Safari的Cookies?

4
根据苹果文档指出:
“...cookies被所有应用程序共享,并在跨进程边界的情况下保持同步。”
但是有这个:
“iOS中不会在应用程序之间共享cookie。”
所以,基本上我不能在我的应用程序中使用来自Safari的cookie吗?
1个回答

9
iOS安全沙盒禁用了使用WKWebView的应用间cookie共享,这就是你在iOS笔记中发现的问题,并且没有解决方法。您可以通过利用WKProcessPool在应用内部多个WKWebView之间共享cookie。
有一种方法可以通过将SFSafariViewController(iOS 8及以下版本需要切换到Safari)与自定义URL方案结合使用,从Safari将cookie数据传递到您的应用程序中。
此方法的基本原理如下:
  1. 使用SFSafariViewController加载Safari视图控制器(或iOS8及以下版本使用Safari [UIApplication sharedApplication] openURL:url]
  2. url处进行脚本尝试加载自定义URL方案,传递cookie数据即my-custom-scheme:cookie=value
  3. 然后您的应用程序将在- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation中接收cookie数据
用户将看到Safari视图控制器弹出然后关闭(或在iOS8及以下版本中在应用程序之间切换)。这没有静默处理的方法(额外信息:有方法可以强制主窗口位于SFSafariViewController之上,但这不受苹果支持)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接