Мне нужно загрузить URL-адрес в WebView и загрузить все содержимое веб-сайта (документы, изображения, css и т. д.), чтобы иметь возможность работать в автономном режиме.
Я создал приложение 4-5 лет назад (для iOS 7.0), используя это --> http://robnapier.net/offline-uiwebview-nsurlprotocol
Недавно меня попросили проверить, работает ли приложение для последних версий iOS. Я обнаружил, что большинство классов, упомянутых в этой статье, сейчас устарели (например: UiWebView или NSURLConnection).
Когда я запускаю приложение сейчас, запускается процесс кэширования, но в какой-то момент он зависает при загрузке файла.
Я включил CFNETWORK DIAGNOSTICS и большую часть времени получаю эту ошибку: SSL_ERROR_ZERO_RETURN operation failed because the connection was cleanly shut down with a close_notify alert. Я много исследовал, но безуспешно.
Я думаю о перестройке всего приложения с использованием современного решения, но на самом деле я не нахожу ничего ясного. Вероятно, такие приложения не являются обычным явлением.
Мой вопрос в том, есть ли у кого-то лучший подход для этого. Мне даже все равно, делаю ли я это изначально на iOS или использую какую-то кросс-платформенную технологию, такую как Reac-Native или Flutter.
Любые предложения будут очень приветствоваться.
Спасибо.
РЕДАКТИРОВАТЬ
Сеть, которую я должен обернуть внутри WebView, реализует Service Worker для кэширования данных. Таким образом, в браузере Safari эта сеть работает в автономном режиме.
Мне просто нужно было бы обернуть кого-то из этой сети в приложение для iOS, я пробовал SFSafariViewController, но все еще не работает.





Устаревший не означает недоступный. Есть еще много приложений, использующих UIWebView и NSURLConnection. Прежде чем приступить к переписыванию своего приложения с использованием новейших и лучших версий, вы должны понять, в чем проблема. Есть хороший совет по отладке ошибки, которую вы получаете в iOS 11.2.1 Xcode 9.2 BoringSSL SSL_ERROR_ZERO_RETURN(6). Краткая версия: установите переменную среды CFNETWORK_DIAGNOSTICS, чтобы получить более точную информацию об отладке сети.
Учитывая возраст вашего кода, я полагаю, что Требование Apple, чтобы приложения использовали безопасные соединения, начиная с iOS 9, может быть как минимум одним фактором. Вам следует прочитать статью Безопасность транспорта приложений, чтобы узнать, как обновить приложение, чтобы оно соответствовало этим требованиям. Вам обязательно нужно добавить ключ или два в файл Info.plist вашего приложения, и вы, вероятно, также захотите обновить свое приложение, чтобы использовать URL-адрес https вместо http. Внести эти изменения будет намного проще, чем переписать ваше приложение, и вам в любом случае необходимо выполнить требование ATS, поэтому вы можете сначала выполнить эту часть.
Спасибо за ваш ответ @Caleb, я очень ценю это :) Я уже установил
CFNETWORK_DIAGNOSTICS, как я сказал в своем посте. Я не упомянул об этом, но я также добавилNSAllowsArbitraryLoadsиNSExceptionAllowsInsecureHTTPLoadsк своемуInfo.plistи используюhttps. После того, как я сделал все, что мог найти, он все еще не работает. Я думаю, это как-то связано с тем, что веб-сайт использовал кэш приложений для кэширования автономных данных, а теперь он был обновлен для использования Service Worker.