He comenzado a desarrollar aplicaciones html para plataformas multiples. Hace poco escuché sobre Cordova 2.0 (PhoneGap) y desde entonces tengo curiosidad por saber cómo funciona el puente. Después de mucho código caminaba, vi que el Exec.js es el código donde llamada de JS -> Nativo sucede¿Cómo funciona phoneGap (Cordova) internamente, iOS específica
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";
Pero quieren entender cómo funciona, cuál es el concepto que aquí, lo que hace de archivos: ///! gap_exec o gap: // ready do? y cómo la llamada propgate a las capas más bajas (capas de código nativas)
muchas gracias por adelantado.
Me di cuenta de esto hace mucho tiempo. Pero tu respuesta es correcta. Gracias – 2ndlife
podría actualizar su respuesta, si todavía está siguiendo cordova? Parece que el ejecutor inyecta un iframe con src = "gap: // ready" y ese es el único js ... entonces CDVViewController.m intercepta todas las solicitudes para 'gap' con shouldStartLoadWithRequest luego CDVCommandQueue.m usa stringByEvaluatingJavaScriptFromString para obtener la cola de comandos js . – premiumFrye
@Christian Kuetbach: Dijo que "podría haber más de una llamada nativa ejecutándose al mismo tiempo". Mi situación es exactamente la misma. Necesito llamar a un método de complemento nativo más de una vez al mismo tiempo. También quiero pasar una respuesta del complemento nativo (como resultado del complemento mediante el ID de devolución de llamada) para cada llamada a un complemento desde JavaScript. No estoy seguro de cómo se comporta Córdoba en este contexto. He hecho una pregunta por separado para este propósito. Si es posible, ¿podría mirar este http://stackoverflow.com/q/32139534/2035845. –