2nd*_*ife 11 ios cordova cordova-2.0.0
我已经开始为mutliple平台开发html应用程序.我最近听说过Cordova 2.0(PhoneGap),因为我一直很想知道这座桥是如何工作的.经过大量的代码遍历后,我看到Exec.js是JS - > Native调用的代码
execXhr = execXhr || new XMLHttpRequest();
// Changeing this to a GET will make the XHR reach the URIProtocol on 4.2.
// For some reason it still doesn't work though...
execXhr.open('HEAD', "file:///!gap_exec", true);
execXhr.setRequestHeader('vc', cordova.iOSVCAddr);
if (shouldBundleCommandJson()) {
execXhr.setRequestHeader('cmds', nativecomm());
}
execXhr.send(null);
} else {
execIframe = execIframe || createExecIframe();
execIframe.src = "gap://ready";
Run Code Online (Sandbox Code Playgroud)
但是想要了解它是如何工作的,这里的概念是什么,file:///!gap_exec或gap:// ready是做什么的?以及调用如何支持较低层(本机代码层)
提前感谢一堆.
Chr*_*ach 12
诀窍很简单:
有一个webview.这会显示您的应用.webview将处理所有导航事件.
如果浏览器导航到:
file:///!gap_exec
Run Code Online (Sandbox Code Playgroud)
要么
gap://
Run Code Online (Sandbox Code Playgroud)
webview将取消导航.这些字符串后面的所有内容都被重新用作标识符,以获取具体的插件/插件方法和参数:
伪url示例:
gap://echoplugin/echothistext?Hello World
Run Code Online (Sandbox Code Playgroud)
这将导致phonegap查找echoplugin并调用echothistext方法将文本发送"Hello World"到(本机)插件.
更新
从本机到javascript的方式是(或可能是)将javascript:URL 加载到webview中.
具体实现有点复杂,因为javascript必须向本机代码发送回调id.可能会有多个本机呼叫同时运行.但实际上这根本不是魔术.只是一个数字,以获得正确的javascript回调正确的JSON.
平台和javascript之间有不同的通信方式.对于Android,有三到四个不同的桥梁.
| 归档时间: |
|
| 查看次数: |
9253 次 |
| 最近记录: |