在iOS应用程序中预先填充UIWebView的HTML5脱机appcache

是否有可能创build一个UIWebView的HTML5离线appcache预填充,以便它将脱机工作,即使这是第一次用户访问UIWebView?

如果是这样,怎么样?

我知道我可以通过其他机制来实现这一目标,但以上是我的第一select。 如果可能的话,我只是很好奇。

我在文档中看不到任何内容。

我认为这可能会降低到是否可以编程写入UIWebView的caching文件(也就是说,UIWebViewcaching是否驻留在应用程序的沙箱中) – 如果不能,则游戏结束。 如果可以的话 ,那么在将预先填充的caching文件放置到位之后会发生什么,以及UIWebView是否“被愚弄”,认为它已经被下载并caching了您的HTML5内容。

如果您使用iPhone模拟器来testing您的应用程序,请查看~/Library/Application Support/iPhone Simulator/5.0/Applications (如有必要,请使用您的iOS版本replace“5.0”)。 您应该在模拟器中为每个应用程序看到一长串hex数字; find与您的应用程序相对应的一个,然后在Library/Caches/[your app's identifier]子文件夹中查找名为Cache.db的文件。

可能是UIWebView存储caching数据的地方。 如果不是,游戏结束,对你的问题的答案是“不,这是不可能的”。 如果 UIWebViewcaching数据的地方,那么可以在模拟器中填充这个Cache.db文件,抓取文件,将其存储在应用程序包中,然后在需要预先准备Cache.db将caching写入适当的位置。填充caching。

无论如何,这是我用来确定是否可能的攻击线 – 我相当确信答案将是“不,不可能”,除非事实certificate,UIWebViewcaching确实驻留在您的应用程序的沙箱中,是可写的,你可以通过replace它的caching文件来欺骗UIWebView。

你正在寻找的是你的caching文件夹中的两个文件。

ApplicationCache.dbcache.db

它们都驻留在您的应用程序的Library / Caches / [您的包标识符]文件夹中,您可以完全访问它们。 您可以将预先填充的caching数据添加到您的捆绑包中,并将其简单地复制到应用程序启动时的caching文件夹中。

顺便说一句,你可以很容易地玩,因为它们很简单,SQLITE数据库。

我希望这有帮助

我的意思是强制加载是这样的:如果一个网页被访问,元素被caching下一次更快的加载。 我的意思是通过强制加载或预热caching,实际上向后台的uiwebview发出请求,将数据加载到caching中以加载更快的内容,所以当用户真正点击它时,caching中就会有信息。

如果你使用chrome,它和他们用来增加网上冲浪的策略是类似的:当页面加载的时候,他们立即find页面上的所有链接并且parsing链接,所以如果用户点击链接,他们没有在看到页面之前等待来自DNS服务器的响应,因为它已经为他们完成了!

我希望这个更有意义。

引用:

这是一个很酷的问题。 请考虑只查看开发人员参考中提供的内容,否则苹果将拒绝您的应用程序。 你可以考虑在任何你想隐藏的视图中强制加载caching。 通过这种方式,您可以将元素添加到caching中,但除非您知道内部cachingalgorithm,否则您无法从caching中删除项目…我可以说这不是一个黑客,一种技术! – vinnybad 11月23日17:26

@vinnybad:我不完全确定你的意思是“强制加载”。 你能详细说一下吗? (听起来可能值得回答,而不是评论!) – 特罗特11月23日在17:40