具有离线访问功能的UIWebView

时间:2011-06-25 19:56:57

标签: iphone objective-c ios

我需要一个智能UIWebView(或类似组件),它可以显示/缓存我服务器上HTML页面的完整内容以及用于离线访问的图像。一旦互联网可用,它将加载实时版本。

该应用是一个包含会员资料的会员目录。每个成员都有一个主索引和一个页面。

你们能指导我如何开发这样的东西吗?或者指向现有的图书馆。

感谢您的帮助,我要开发新的iOS。

3 个答案:

答案 0 :(得分:1)

我能想到的两条路径:

  • 在子类或类别中包装UIWebView以封装加载逻辑
    1. 如果网络处于联机状态,请直接加载URL并使用NSCache以URL字符串作为密钥对其进行缓存。 NSURLConnection或EGOHTTPRequest之类的内容将使加载变得容易。
    2. 如果网络处于脱机状态,请检查缓存中是否存在数据。如果是这样,请使用-loadData:方法将内容从缓存中提取出来并在WebView中呈现它。如果它不存在,则显示错误
  • 使用缓存HTTP库(如ASIHTTPRequest)加载数据。它可以缓存内部加载的数据,并在网络脱机时为后续请求提供缓存结果。

ASIHTTPRequest表面看起来好多了,但是有一个可能的缺点:它是一个完全重新实现的URL加载系统,基于非常低级别的结构(CFNetwork)。因此,当Apple对其高级库(NSURLConnection,NSCache)进行改进时,ASIHTTP无法获得这些进步。此外,由于它的大部分代码都在Foundation中,因此当它变得普遍可用时,将它移植到ARC将是一个非常重要的项目。

答案 1 :(得分:0)

要在UIWebView上加载本地文件,请使用fileURLWithPath

[WebView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"] isDirectory:NO]]];

答案 2 :(得分:0)

您确实需要查看ASIWebPageRequest,这样可以让您将整个页面缓存离线:

http://allseeing-i.com/ASIHTTPRequest/ASIWebPageRequest