WKWebview之间的本地存储共享

时间:2020-04-15 13:02:25

标签: ios local-storage wkwebview

从一个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];
}

感谢您的帮助!

0 个答案:

没有答案