在UIWebView中使用自定义URLscheme

我有一个黑盒子容器。 我喜欢黑盒子,他们混淆了事情。

这个黑盒子是一个encryption的zip(有点),里面有一些html文件(这是简短的,没有那么痛苦的解释,版本)。

这些文件需要在UIWebView中显示。 现在,简单的方法来解密,解压缩到文件系统,从文件系统加载文件。 这很好,除了黑盒子包含秘密的东西,不能只是躺在文件系统上,甚至不是一秒钟,所以,我做了一个C库,实际上stream的箱子的内容(直接开箱) 。

现在,我有这个stream媒体function,必须以某种方式使其与UIWebView工作。 首先想到的是使用UIWebView可以发送请求的迷你本地HTTP服务器。 然后,我会自己pipe理这些请求,并使用我已经完成的stream式lib返回UIWebView所需的内容。 这可以工作,我想很好,但我认为一个小型的HTTP服务器可能会有点矫枉过正。

所以,我想知道,是否有另一种方式干扰UIWebView和文件系统? 也许使用自定义模式? 像myschema://? 每次UIWebView向myschema://myfile.html发出请求,我都会以某种方式干扰并返回所需的数据?

这样的想法是否可行? 我应该从哪里开始? 也许NSURLRequest?

编辑:我发现这个: iPhone SDK:从自定义URLscheme加载资源 。 但是,听起来不错,浏览器如何知道请求的大小,types(xml / binary / xhtml)以及HTTP头中放置的所有信息?

创build一个自定义NSURLProtocol子类并注册它,以便它将处理HTTP请求。 这将允许您处理来自UIWebView但是您认为合适的请求,包括从库中提供数据。 您可以通过查看RNCachingURLProtocol来检查执行请求的磁盘高速caching以允许脱机浏览的实现 。 我个人使用我写的自定义的NSURLProtocol子类来处理在UIWebView中加载的页面中注入一些JavaScript代码,并且它工作得很好。