我的任务是为基于 Web 的应用程序构建 Android、iOS 和 Windows Phone 包装器。
关键要求之一是某些资产捆绑在应用程序中(例如图像、CSS 和 JavaScript 文件),以减少带宽并帮助提高响应能力,同时仍然通过 Internet 拉取 HTML(和任何丢失的资产)。为此,我需要以某种方式拦截在每个平台的本机浏览器组件中发出的请求。
在 Android 中,我可以通过重写 WebViewClient.shouldInterceptRequest 方法来拦截请求,然后如果确定请求的文件存在并且文件扩展名以“.css”、“.jpg”、“. png”或“.js”。如果没有,资产将照常通过互联网提取。
在 iOS 下,我可以通过创建一个继承自 NSURLCache 对象的对象并覆盖 cachedResponseForRequest 方法来拦截请求,如果确定请求的文件存在并且文件扩展名以“.css”结尾,则再次替换来自应用程序文件系统的本地数据、“.jpg”、“.png”或“.js”。如果没有,资产将照常通过互联网提取。
这两个包装器都按预期工作。当相应的文件存在时,确认 CSS、图像和 JavaScript 文件已成功从本地资产中提取和执行。
我现在需要做的是为 Windows Phone 构建等效项,但到目前为止,我还没有设法弄清楚如何拦截 Microsoft.Phone.Controls.WebBrowser 对象发出的请求。
我已经到处寻找了,但到目前为止还没有发现任何有用的东西。
谁能指出我正确的方向?