从一个View Controller中的WKWebView导航到一个也包含WKWebView的新控制器时,我需要共享数据。从技术上讲,我们正在使用Webview实现本机导航。为了正确加载第二个WKWebView,我们需要第一个保存在本地存储中的cookie和参数。
试图在Web视图之间共享相同的websiteDataStore和相同的进程池。这里有趣的是cookie传输正确-我们在第二个Webview上获得了一个登录会话,但是localStorage不是。我们可以看到通过Safari WKWebView调试器在第一个Web视图中存在本地存储数据,而第二个Web视图具有空的本地存储。
这是我们用于设置Web视图的代码。如果我们打印网站数据存储的数据记录,它将打印cookie,localStorage和sessionStorage,但似乎只是cookie被传输了。
有什么想法为什么不起作用,或者如何在Web视图之间共享localStorage?
- (void)setupWebView
{
WKWebViewConfiguration *webViewConfiguration = [WKWebViewConfiguration new];
webViewConfiguration.websiteDataStore = MBAbstractWebViewController.sharedWebsiteDataStore;
[MBAbstractWebViewController.sharedWebsiteDataStore fetchDataRecordsOfTypes:WKWebsiteDataStore.allWebsiteDataTypes
completionHandler:^(NSArray<WKWebsiteDataRecord *> *records) {
NSLog(@"%@", records);
}];
webViewConfiguration.processPool = MBAbstractWebViewController.sharedProcessPool;
_webView = [[WKWebView alloc] initWithFrame:CGRectZero
configuration:webViewConfiguration];
}
感谢您的帮助!