WKWebView зависает при загрузке локальной веб-страницы с определенной настройкой сети.

У меня есть WKWebView, который загружает локальный набор веб-страниц с использованием WKWebViewConfiguration чтобы установить конфигурацию для @"allowFileAccessFromFileURLs" как истину.

Запрос настроен примерно так:

 NSURL *url = [[NSBundle mainBundle] URLForResource:@"testPage" withExtension:@"html" subdirectory:@"html/pages"]; NSURLRequest *req = [[NSURLRequest alloc] initWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:10.0f]; 

Затем запрос отправляется с использованием следующего метода WKWebview:

 - (nullable WKNavigation *)loadRequest:(NSURLRequest *)request; 

моя проблема в том, где устройство имеет текущее соединение, но нет сетевого трафика. Веб-просмотр как элемент на экране будет добавлен на экран, и запрос будет выполнен, но веб-просмотр покажет белый экран в течение примерно 50 секунд перед отображением локального контента.

Все в веб-просмотре загружается независимо от состояния сети, поскольку оно загружается локально, когда нет установленного набора ссылок.

Например, если устройство подключено к беспроводной сети, но кондиционер сетевой линии установлен на 100% -ную потерю. Создается веб-просмотр, и запрос отправляется для загрузки локального контента, запускающего зависание нагрузки.

Я подумал, что WKWebView может попытаться сделать какую-то проверку в фоновом режиме, которая требует сетевой транзакции, но я сделал некоторое профилирование сети с помощью инструментов, а также некоторую запись временной шкалы в веб-браузере Safari, и я не мог видеть ничего, что могло бы вызвать это повесить.

Единственная причина, по которой я могу думать о загрузке локального контента через 50 секунд или около того, – это то, что он ударил какой-то тайм-аут WKWebView для загрузки сетевого подключения.

Любая помощь будет очень признательна, спасибо.

One Solution collect form web for “WKWebView зависает при загрузке локальной веб-страницы с определенной настройкой сети.”

Хорошо, так что для всех, кто спотыкается об этом, я обнаружил, что я делаю неправильно.

Проблема была не в самом деле WKWebview или в самом веб-контенте, так как я обрабатывал завершение загрузки веб-обозревателя.

в методе:

 - (void)webView:(WKWebView *)webView didFinishNavigation:(null_unspecified WKNavigation *)navigation{ 

Я слушал завершение событий, оценивая некоторые JS так:

 -(void)webView:(WKWebView *)webView didFinishNavigation:(null_unspecified WKNavigation *)navigation { [webView evaluateJavaScript:@"document.body.innerHTML" completionHandler:^(id result, NSError *error) { if (result != nil) { [self doCertainNetworkEvent]; //here another method is called with a networking function inside of it. } if(error) { NSLog(@"evaluateJavaScript error : %@", error.localizedDescription); } }]; } 

Блок завершения, конечно, не смог закончить, пока функция сети в вызове метода didFinishNavigation не была закончена (что не могло быть связано с отсутствием трафика).

  • Как устранить нарушения в Google Login / Registration на WKWebView?
  • Потяните, чтобы обновление не работало в iOS WebView
  • Включить сеансовые куки для iframe на странице в WkWebView / mobile Safari
  • Место хранения файлов cookie WKWebView
  • Как я могу исправить нарушенные функции, вызванные запрещенным useragent?
  • Как удалить кеш в WKWebview?
  • 'reload' vs 'reloadFromOrigin' в WKWebView
  • Просмотр WKWebView Reader
  • WKWebView получает NSURLRequest для внутренних ссылок после завершения загрузки страницы
  • WKWebView не возвращает правильную высоту размера контента
  • Какой поток выполняет метод executeHandler метода WKWebView для оценки JavaScript?
  • Interesting Posts

    Как получить доступ к UIButton через тег в Swift

    Сегодня виджет tableView зависает

    iOS: CAShapeLayer для рисования непрямого изображения и анимации его формы

    Добавить текст на пользовательский маркер на карте google для ios

    Создайте копию CMSampleBuffer в Swift 2.0

    Размещение UIView для покрытия TabBar & NavBar

    Отправить массив в качестве параметра в запросе POST Alamofire

    Могу ли я установить два разных xib для того же UIVIewController для iOS6 и iOS7?

    Есть ли способ защитить контент (изображения, звуки) в приложении для iPhone?

    Слияние платного приложения и бесплатного приложения с покупкой приложения

    Репликация фильтров из Instagram

    StoreKit's SKErrorPaymentCancelled все еще заряжает учетную запись пользователя itunes

    Как запустить KIF (xctest) из командной строки, когда у меня есть только файлы .app и .xctest?

    пауза / запуск AVAudioPlayer без glitchy pops

    Остановить UITableView от автопрокрутки в iOS 8

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.