【问题标题】:Use UIWebView Private API?使用 UIWebView 私有 API?
【发布时间】:2011-08-04 06:38:24
【问题描述】:

我想用 UIWebView 制作一个像 Safari 这样的浏览器, 可以显示网页的加载进度。 我看到一个应用程序“Downloads Lite - Downloader & Download Manager”在应用商店出售 (http://itunes.apple.com/app/id349275540?&mt=8) 可以做到这一点。 它还可以自定义请求的用户代理, 甚至获取Response Header的“内容类型”来决定是否需要下载。

但似乎用 UIWebView 的公共 API 来实现它是不可能的, 所以我想知道他是怎么做到的。 你能给我一些建议吗?

【问题讨论】:

    标签: iphone uiwebview progress agent


    【解决方案1】:

    不需要私有 API 来做这样的事情。

    您以进度指示器为例。通过使用异步 NSURLConnection 你可以获得你想要下载的内容的预期大小:

    -(void)connection:(NSURLConnection*)connection didReceiveResponse:(NSURLResponse*)response
    {
        [response expectedContentLength];
    }
    

    然后,您只需与到目前为止下载的数据量进行比较。

    可以使用 CFNetwork 框架自定义用户代理。

    【讨论】:

    • 网页加载进度为所有页面资源加载进度。包括js css图片iframe等,不是html代码加载进度。
    【解决方案2】:

    看看这个应用程序/博客:icab.de 一般的方法是创建 NSProtocol 的子类并捕获所有 http/https 请求,这样就可以满足您的所有需求。

    【讨论】:

    • 能否提供博客链接?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多