Оффлайн-кеширование содержимого IOS WebView - PullRequest
0 голосов
/ 21 февраля 2019

Мне нужно загрузить 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, но все еще не работает.

SFSafariViewController

1 Ответ

0 голосов
/ 22 февраля 2019

Устаревший не означает недоступный.Есть еще множество приложений, использующих UIWebView и NSURLConnection.Прежде чем вы переписываете свое приложение, используя самые последние версии, вы должны понять, в чем проблема.Есть хороший совет для отладки ошибки, которую вы получаете в iOS 11.2.1 Xcode 9.2 BoringSSL SSL_ERROR_ZERO_RETURN (6) .Краткая версия: установите переменную среды CFNETWORK_DIAGNOSTICS, чтобы получить более качественную информацию об отладке по сети.

Учитывая возраст вашего кода, я бы предположил, что требование Apple о том, чтобы приложения использовали безопасные соединения запуск в iOS 9 может быть как минимум одним фактором.Вы должны прочитать App Transport Security , чтобы узнать, как обновить приложение, чтобы оно соответствовало этим требованиям.Вам определенно потребуется добавить ключ или два в файл Info.plist вашего приложения, и вам, вероятно, также потребуется обновить приложение, чтобы использовать URL-адрес https вместо http.Внести эти изменения будет намного проще, чем переписать ваше приложение, и вам все равно нужно будет выполнить требование ATS, так что вы могли бы сначала выполнить эту часть.

...