WKWebView数据共享

问题说明:在使用WKWebview时遇到一个问题,在h5页面A中存储的数据,在h5页面B中拿不到这个存储的数据。

原因:WKWebView Cookie 问题在于 WKWebView 发起的请求不会自动带上存储于 NSHTTPCookieStorage 容器中的 Cookie。

解决方案:
通过让所有WKWebView 共享同一个 WKProcessPool 实例,可以实现多个 WKWebView 之间共享 Cookie(session Cookie and persistent Cookie)数据。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//定义一个processPool单例 
+(WKProcessPool*)sharedProcessPool{

static WKProcessPool *processPool = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
if (!processPool) {
processPool = [[WKProcessPool alloc] init];
}
});
return processPool;
}

// 配置
WKWebViewConfiguration *config = [[WKWebViewConfiguration alloc] init];
config.processPool = [WebViewController sharedProcessPool];
webView = [[WKWebView alloc] initWithFrame:() configuration:config];