3

根据苹果文档:

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

但是有这个iOS 注意

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

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

4

1 回答 1

9

iOS 安全沙盒禁用应用程序之间的 cookie 共享,WKWebView正如您在 iOS 注释中发现的那样,并且没有办法解决这个问题。您可以WKWebView利用WKProcessPool.

有一种方法可以将 cookie 数据从 Safari 传递到您的应用程序,方法是将SFSafariViewController(iOS 8 及更低版本,您需要切换到 Safari)与自定义 URL 方案相结合。

这种方法的基本原理是:

  1. SFSafariViewController使用(或[[UIApplication sharedApplication] openURL:url]为 iOS8 及更低版本启动 Safari)加载 Safari 视图控制器
  2. 您的脚本url将尝试加载您的自定义 URL 方案并传递 cookie 数据,即my-custom-scheme:cookie=value
  3. 然后,您的应用程序将接收 cookie 数据- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation

然而,用户将看到 Safari 视图控制器弹出然后关闭(或在 iOS8 及更低版本的应用程序之间切换)。没有这样做的静默方式(额外:有一些方法可以强制主窗口高于SFSafariViewController但Apple不支持)。

于 2017-01-05T13:39:58.917 回答