我需要在WebView
中加载网址并下载网站的全部内容(文档,图片,CSS等)以便能够脱机工作。
我使用这个 - > http://robnapier.net/offline-uiwebview-nsurlprotocol在4 - 5年前(针对iOS 7.0)构建了一个应用程序
最近我被要求检查该应用程序是否仍适用于最新的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
环境变量,以便获得更好的网络调试信息。
鉴于您的代码的年龄,我认为从iOS 9开始的Apple's requirement that apps use secure connections可能至少是一个因素。您应该阅读App Transport Security以了解如何更新您的应用以满足这些要求。你肯定需要在你的应用程序的Info.plist
文件中添加一两个密钥,你可能还想更新你的应用程序以使用https
URL而不是http
。进行这些更改将比重写您的应用程序容易得多,并且您无论如何都需要满足ATS要求,因此您最好先完成该部分。