【问题标题】:Using a custom URL scheme with UIWebView将自定义 URL 方案与 UIWebView 一起使用
【发布时间】:2014-03-02 06:32:16
【问题描述】:

我有一个黑盒容器。我喜欢黑匣子,它们可以很好地混淆事物。

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

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

现在,我拥有了这种流媒体功能,并且必须以某种方式使其与 UIWebView 一起使用。我想到的第一件事是使用一个微型本地 HTTP 服务器,UIWebView 可以在其中发送其请求。然后,我将自己管理请求并使用我已经完成的流媒体库返回 UIWebView 所需的内容。我想这会很好用,但我认为迷你 HTTP 服务器会不知何故,也许,有点矫枉过正。

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

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

编辑:我发现了这个:iPhone SDK: Loading resources from custom URL scheme。听起来不错,但是,浏览器如何知道请求的大小、类型(xml/binary/xhtml)以及 HTTP 放在其标头中的所有信息?

【问题讨论】:

    标签: ios http url uiwebview url-scheme


    【解决方案1】:

    创建一个自定义 NSURLProtocol 子类并注册它,以便它处理 HTTP 请求。这将允许您处理来自UIWebView 的请求,但您认为合适,包括从您的库中提供数据。您可以通过查看RNCachingURLProtocol 来检查执行请求的磁盘缓存以允许离线浏览的实现。我个人使用我编写的自定义NSURLProtocol 子类来处理将一些javascript 代码注入到UIWebView 中加载的页面中,并且效果很好。

    【讨论】:

    • 我唯一不明白的是,我如何才能将有关文件大小、文件类型的数据发送回 UIWebView(使用 HTTP 时通常进入标题的内容)跨度>
    • 除此之外,您的提议似乎绝对合理!
    • 您将使用该信息创建一个 NSURLResponse,并使用 -URLProtocol:didReceiveResponse:cacheStoragePolicy: 将其发送到协议客户端 (NSURLProtocolClient)。
    • 如果您查看引用代码的startLoading,您会看到大部分示例。唯一的区别是你需要构造NSURLResponse,因为它不会给你。
    • 有关另一个可能更接近您正在寻找的示例,请参阅github.com/PandoraBoy/PandoraBoy/blob/master/…
    猜你喜欢
    • 1970-01-01
    • 2013-12-23
    • 2015-04-06
    • 1970-01-01
    • 2011-01-21
    • 1970-01-01
    • 2021-01-09
    • 2014-04-02
    • 2012-06-15
    相关资源
    最近更新 更多