La respuesta corta es que crea una aplicación nativa esqueleto para usted que muestra una vista completada por el componente del navegador web nativo. Todos los archivos habituales que normalmente irían en un servidor web, como .html, .jpg, .css y .js, se incluyen con la aplicación. La forma exacta en que se incluyen depende del sistema operativo al que se dirigen sus compilaciones, pero en lugar de tener que salir y obtener estos archivos en la red, el componente del navegador web puede acceder a ellos directamente en el dispositivo donde se ejecuta la aplicación.
En términos de acceso a funciones nativas que normalmente no están disponibles para los componentes del navegador web, todos los sistemas operativos compatibles con PhoneGap también tienen formas de puentear entre el código nativo y lo que sucede dentro de la vista del navegador. Hay alguna variación en los detalles, pero todos funcionan más o menos de esta manera.
Cuando desea algún evento en el navegador, como tocar un enlace, para que algo suceda en el teléfono (por ejemplo, vibración), el enlace utiliza un esquema especial (la primera parte de la URL) para llamar la atención del anfitrión nativo. No sé de antemano qué usa phonegap, pero digamos que estoy escribiendo mi propia integración. Entonces podría crear un enlace en el lado de la web como “myapp: // vibrate”.
- ¿Cuáles son los mejores directorios para encontrar empresas de desarrollo de aplicaciones móviles de Oriente Medio?
- ¿Qué tipo de desarrollador se necesita para una aplicación 'live newsfeed' que se basa en muchas fuentes?
- ¿Las aplicaciones web aún pueden vencer a las aplicaciones nativas?
- Cómo cambiar efectivamente a los desarrolladores de aplicaciones móviles
- ¿Es práctico o beneficioso que un desarrollador móvil pueda codificar en iOS y Android, ya que la mayoría de los clientes intentarían implementarlo en ambas plataformas?
Cada vez que la vista del navegador intenta acceder a cualquier URI, se activa incluso el contenedor de aplicaciones nativo. Si el esquema en el URI es algo que no es “myapp”, simplemente deje que el sistema operativo lo maneje normalmente. Si veo “myapp”, miraré el camino y decidiré qué hacer. En este caso, será algo como (metacódigo):
onWebViewEvent (uri) {
if (uri.scheme! = “myapp”) {
// Deje que el SO maneje
falso retorno;
}
if (uri.path == “vibrar”) {
os.makeVibrateHappen ();
}
// Manejamos
volver verdadero;
}
Por otro lado, algo puede suceder en el sistema operativo que necesita atención en la vista web. Por ejemplo, supongamos que quiero que la vista web sepa que alguien sacude el teléfono. En este caso, básicamente puede inyectar código javascript desde el lado nativo. Podría verse más o menos así:
onShakeEvent () {
webview.runJavascript (“handlePhoneShake ()”);
}
Esto supone que hay una función Javascript “handlePhoneShake” cargada en la página actual que se muestra en la vista web. En realidad, puede empujar cualquier cantidad de Javascript, de cualquier complejidad, y también obtener resultados de retorno. Es realmente bastante poderoso.
Entonces, si es tan fácil, ¿por qué usar PhoneGap? Principalmente porque no conoces bien el lado nativo, o en absoluto. Soy fanático de las aplicaciones híbridas, pero no uso PhoneGap, porque puedo implementar interfaces específicas para satisfacer las necesidades de mi aplicación, en lugar de usar las generales en PhoneGap. También me permite evitar una dependencia de una biblioteca externa que realmente no necesito.