WKWebView是否使用Safari的cookie?

时间:2016-10-20 07:28:07

标签: ios wkwebview nshttpcookie

根据Apple文档:

  

... cookie在所有应用程序之间共享,并且跨进程边界保持同步。

但是有 iOS Note

  

在iOS中的应用程序之间不共享Cookie。

所以基本上我不能在我的应用程序中使用Safari中的cookie吗?

1 个答案:

答案 0 :(得分:4)

iOS安全沙箱禁用使用WKWebView的应用之间的Cookie共享,因为您已经发现了iOS注释,并且没有办法解决这个问题。您可以使用WKWebView在应用内的多个WKProcessPool之间共享Cookie。

通过将SFSafariViewController(iOS 8及以下版本,您需要切换到Safari)与自定义网址方案相结合,有一种方法可以将Cookie数据从Safari传递到您的应用。

这种方法的基本原理是:

  1. 使用SFSafariViewController加载Safari视图控制器(或针对iOS8及更低版本启动Safari [[UIApplication sharedApplication] openURL:url]
  2. url处的脚本会尝试加载您传递Cookie数据的自定义网址方案,例如my-custom-scheme:cookie=value
  3. 您的应用随后会在- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
  4. 中收到Cookie数据

    然而,用户将看到Safari View Controller弹出然后关闭(或在iOS8及更低版本的应用程序之间切换)。没有一种沉默的做法(额外的:有办法迫使主窗口高于SFSafariViewController,但Apple并不支持这种方式。