当前位置 : 主页 > 手机开发 > cordova >

phoneGap(Cordova)在内部工作,iOS具体

来源:互联网 收集:自由互联 发布时间:2021-06-10
我已经开始为多个平台开发html应用程序.我最近听说过Cordova 2.0(PhoneGap),自从我很好奇地知道桥梁是如何工作的. 经过很多代码行走,我看到了Exec.js是来自JS的调用代码 – 本机发生 execXh
我已经开始为多个平台开发html应用程序.我最近听说过Cordova 2.0(PhoneGap),自从我很好奇地知道桥梁是如何工作的.
经过很多代码行走,我看到了Exec.js是来自JS的调用代码 – >本机发生

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";

但是想了解这是如何工作的,这里的概念是什么?file:///!gap_exec或gap:// ready?而呼叫如何支持下层(本机代码层)

感谢一大堆提前.

诀窍很简单:

有一个webview.这将显示您的应用程序. webview将处理所有导航事件.

如果浏览器导航到:

file:///!gap_exec

要么

gap://

webview将取消导航.这些字符串后面的所有内容都被重新用作标识符,以获取具体的plugin / plugin-method和参数:

伪网址示例:

gap://echoplugin/echothistext?Hello World

这将导致phonegap寻找一个echoplugin并调用echothistext方法发送文本“Hello World”到(native)插件.

更新

从本机到javascript的方式(或者可能是)将JavaScript:url加载到webview中.

具体的实现有点复杂,因为javascript必须将回调id发送到本地代码.在同一时间可能有多个本机呼叫正在运行.但事实上这根本就不是魔术.只需要一个数字来获得正确的JSON到正确的javascript回调.

平台和javascript之间有不同的沟通方式.对于Android,有三四个不同的桥梁.

网友评论