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