PhoneGap上的iOS中使用了一种非常常见的技术:拦截HTTP(或URL)协议,以便从其他来源(例如缓存)为基于PhoneGap的应用程序提供内容。您只需使用NSURLProtocol and co实施新协议。有没有办法在Android上的PhoneGap中拦截HTTP请求?
因此,您可以引入例如cache://server1/lookup1.json
类型的URL(方案是'cache'),可以从PhoneGap内的JavaScript中调用,并且它将达到您的NSURLProtocol实现,以便您可以例如在询问真实服务器之前查看本地缓存。我想这是相当不错的方式,如何实现即使在离线模式下也能运行的应用程序(当然有限的时间)。
现在的问题:Android上有类似的可能吗? 我知道没有NSURLProtocol的直接版本(甚至不能 - 通常在Java/Dalvik运行时,PhoneGap Web浏览器组件作为本机组件运行)。所以我很可能会寻找更多创造性的方法来拦截那些...也许在JavaScript中,也许在PhoneGap/Cordova Android代码中,也许是浏览器组件的一些本地插件。
我会很感激这里的任何提示,实际上我需要将基于PhoneGap的应用程序在iOS上构建到Android上。
谢谢。是的,我实际上意识到这种可能性。不过,我想以非侵入性的方式进行拦截。在你的例子中'href'属性是JavaScript函数调用,我想保留它作为href =“cache://ip.jsontest.com”。 –
我编辑了我的答案,以非干扰方式拦截url方案。请让我知道它是否有效 –
看起来这是迄今为止最好的(也是唯一的)答案。我真的希望在Javascript之外的东西,但它似乎是Android的唯一途径。 –