Совместное использование локального хранилища между WKWebviews - PullRequest
2 голосов
/ 15 апреля 2020

Мне нужно поделиться данными при переходе от WKWebView в одном View Controller к новому, который также содержит WKWebView. Технически мы реализуем встроенную навигацию с использованием веб-представлений. Для правильной загрузки второго WKWebView нам нужны файлы cookie и параметры, сохраненные в локальном хранилище первым.

Попытка совместного использования одного и того же websiteDataStore и одного и того же пула процессов между веб-представлениями. Интересно, что куки передаются правильно - мы вошли в сеанс во втором веб-просмотре, а localStorage - нет. Мы могли видеть, что данные локального хранилища присутствуют в первом веб-представлении через отладчик Safari WKWebView, а второе веб-представление имеет пустое локальное хранилище.

Вот код, который мы используем для настройки веб-просмотра. Если мы распечатаем записи данных из хранилища данных веб-сайта, то будут распечатаны файлы cookie, localStorage и sessionStorage, но кажется, что передаются только файлы cookie.

Любые идеи, почему это не работает или как может быть 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];
}

Любая помощь приветствуется!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...