На локальной странице HTML есть удаленный тег Javscript, с которого я перехожу через WkWebView, который никогда не заканчивает загрузку (как в случае, если устройство iOS не подключено к Интернету, либо интернет-устройство слишком медленное),
К сожалению, WKWebView никогда не прерывает попытку загрузить этот актив и никогда не переходит к моему WKNavigationDelegate (т.е. не вызывается ни -webView:didFailNavigation:withError:
, ни -webView:didFinishNavigation: neither
), поэтому пользователи застревают с пустой HTML-страницей, которая никогда полностью не разрешает и никогда не выходят из строя.
К счастью, в некоторых сценариях, которые я отлаживал через удаленный отладчик JOS от Safari, я заметил, что мы запустили ошибку Failed to load resource: The Internet connection appears to be offline
, зарегистрированную на консоли, а в других (например, некоторые устройства в режиме полета) WKWebView никогда не кажется к таймауту с этой ошибкой или сдаваться, поэтому никаких обратных вызовов WKNavigationDelegate не запускаются.
Вы можете воспроизвести этот сценарий самостоятельно, используя симулятор iOS 8.2 с любым приложением WKWebView iOS, перейдите к любому файлу с локально обслуживаемым HTML файлом, затем добавьте тег script с любым удаленным URL-адресом, затем активируйте подключение к Интернету, чтобы "100% -ная потеря" с помощью Apple Network Link Conditioner.
Каким будет лучший способ заставить WkWebView таймаутом/возвратом через обратный вызов с ошибкой или успешным выполнением его WKNavigationDelegate?