IOS离线缓存WebView内容

问题描述 投票:1回答:1

我需要在WebView中加载网址并下载网站的全部内容(文档,图片,CSS等)以便能够脱机工作。

我使用这个 - > http://robnapier.net/offline-uiwebview-nsurlprotocol在4 - 5年前(针对iOS 7.0)构建了一个应用程序

最近我被要求检查该应用程序是否仍适用于最新的iOS版本。我发现本文中提到的大多数类现在都已弃用(例如:UiWebViewNSURLConnection)。

当我现在运行应用程序时,缓存过程开始,但在下载文件时它会在某个时刻卡住。

我启用了CFNETWORK DIAGNOSTICS,大部分时间我都收到此错误:SSL_ERROR_ZERO_RETURN operation failed because the connection was cleanly shut down with a close_notify alert。我研究了很多但没有成功。

我正在考虑使用现代解决方案重建整个应用程序,但实际上我并没有真正找到任何清楚的东西。可能这种应用程序并不常见。

我的问题是,是否有人为此提出了更好的方法。如果我在iOS本地使用或使用Reac-NativeFlutter等跨平台技术,我甚至不在乎。

任何建议都会非常受欢迎。

谢谢。

编辑

我必须在WebView中包含的网络实现了Service Worker来缓存数据。所以在Safari浏览器中,这个网络离线工作。

我只需要将这个网络包装在iOS应用程序中,我尝试了SFSafariViewController但仍然无法正常工作。

SFSafariViewController

ios caching webview offline
1个回答
1
投票

不推荐并不意味着不可用。仍然有很多使用UIWebViewNSURLConnection的应用程序。在使用最新最好的应用程序重写应用程序之前,您应该了解问题所在。有一个很好的提示来调试你在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要求,因此您最好先完成该部分。

© www.soinside.com 2019 - 2024. All rights reserved.