emulator cordova ripple

cordova - ¿Cómo usar Ripple Emulator para Windows para probar la aplicación PhoneGap?



adobe phonegap emulator (2)

¿Se puede usar el emulador Can Ripple para probar la aplicación PhoneGap en Windows?

O estoy haciendo algo realmente malo o Ripple no funciona en absoluto en ese entorno.

He instalado la extensión Ripple Emulator para Chrome desde Chrome Store. Navegué Chrome a mi aplicación móvil (se sirve localmente a través de XAMPP). Hice clic en el ícono Ripple junto a Chrome omnibar y hice clic en Enable en ventana abierta. Seleccioné la plataforma adecuada ( Cordova 2.0 ).

Mi aplicación se recargó en un aspecto similar al móvil, simulando un dispositivo móvil. Ripple no pudo leer mi configuración desde el archivo config.xml , pero ese es un error conocido (se informa here y here ). Espero que este no sea un problema que me impida usar Ripple en absoluto?

Seleccioné mi dispositivo ( Samsung Nexus ) y comencé a probar mi dispositivo móvil. Incluso la primera llamada a la API de PhoneGap ha fallado. Cannot call method ''watchHeading'' of undefined brújula, pero todo lo que obtuve fue Cannot call method ''watchHeading'' of undefined se Cannot call method ''watchHeading'' of undefined .

¿Cómo puede ser indefinido el objeto PhoneGap básico? ¿Qué me estoy perdiendo? ¿Puedo probar la aplicación PhoneGap en Windows en Chrome con Ripple Emulator o me falta la idea completa de qué es Ripple?

Traté de ayudarme con la documentación de Ripple, pero el capítulo " Habilitar el emulador de Ripple " es una basura completa. No tengo ni siquiera un signo de la opción Start Ripple Services de ondulación en el ícono de Ripple (solo Enable y Disable ) y cuando hago clic en Enable no hay ningún signo del acuerdo de licencia que pueda revisar y aceptar. Tengo la sensación de que este doctor habla de algo completamente diferente de lo que yo uso.

¿Cómo usar Ripple en Chrome para probar la aplicación PhoneGap? ¿Qué me estoy perdiendo?


Ripple debería funcionar con las últimas versiones de Phonegap, aunque es posible que reciba algunos mensajes de error falsos que aparecen durante la carga de la página debido a que Ripple no está actualizado con las últimas versiones de Phonegap. Asegúrate de haber incluido Phonegap JS en tu página. Prueba el siguiente ejemplo: funciona bien para mí en Ripple:

<html> <head> <script type="text/javascript" charset="utf-8" src="cordova-2.8.0.js"></script> <script type="text/javascript"> function deviceready() { console.log("Device ready"); navigator.compass.watchHeading(function(heading){ document.getElementById("heading").innerHTML = heading.trueHeading; },function(error){ var errorType; switch(error.code){ case CompassError.COMPASS_NOT_SUPPORTED: errorType = "Compass not supported"; break; case CompassError.COMPASS_INTERNAL_ERR: errorType = "Compass internal error"; break; default: errorType = "Unknown compass error"; } document.getElementById("heading").innerHTML = errorType; }); } document.addEventListener("deviceready", deviceready, true); </script> </head> <body> <h1>Test</h1> <p>Heading: <span id="heading"></span></p> </body> </html>


tl; dr: Al contrario de lo que se dice en los documentos de PGB, debe mantener una copia del archivo cordova.js en el directorio raíz de su aplicación y este archivo debe tomarse exactamente de la versión 2.0 de PhoneGap, ya que la última versión de Ripple Emulator no lo hace trabajar ni con otra versión ni sin este archivo.

Solución

Estoy desarrollando mis aplicaciones PhoneGap utilizando PhoneGap Build, no el entorno PhoneGap local. Entonces, como me phonegap.js , phonegap.js archivo phonegap.js del phonegap.js de mi aplicación y solo dejé la referencia en index.html . Esto está bien para PhoneGap Build, pero absolutamente no está bien para Ripple Emulator.

Desde que volví a poner ese archivo (en realidad cordova.js desde la cordova.js lib/android/example/assets/www/ de phonegap-2.0.0.zip ver la licencia, iniciar los servicios de Ripple y probar la aplicación PhoneGap que funcionaba localmente.

Aviso para personas que luchan con un problema similar: la versión actual de Ripple Emulator usa Cordova 2.0 . ¡Asegúrate de descargar la versión correcta de PhoneGap y tomar cordova.js de ella! No intente utilizar cordova.js desde una versión más reciente (actualmente 3.0.0 ) ya que puede encontrarse con situaciones indetectables, como ver muchas alert() extrañas alert() e incluso colgar Chrome sobrecargado.

Siempre asegúrese de que está utilizando la versión de archivo JS de PhoneGap, que mapea la que está detrás de Ripple.

Paso a paso

Pasos clave para poder probar la aplicación PhoneGap en Windows, usando Chrome y Ripple Emulator:

  1. Vuelva a cordova.js archivo cordova.js en la carpeta raíz y verifique la referencia a él. Puedes phonegap-2.0.0.zip carpeta lib/android/example/assets/www/ desde cualquier versión descargable de PhoneGap (aunque debes usar phonegap-2.0.0.zip , ver más arriba).

  2. Instale la extensión Ripple Emulator para su navegador Chrome, usando Chrome Store. Permitirle.

  3. Comience su servidor web local y ejecute su código HTML de su aplicación móvil a través de él (las pruebas a través del acceso directo a archivos son principalmente posibles en Ripple Emulator, pero no son recomendables y pueden producir resultados impredecibles).

  4. Haga clic en el ícono del emulador de Ripple, a la derecha en su omnibar de Chrome y luego haga clic en Enable (o seleccione la opción adecuada en el menú contextual, haciendo clic con el botón derecho en la página).

  5. Acepte el acuerdo de licencia y seleccione la plataforma adecuada ( Cordova 2.0.0 ).

  6. Haga clic en el ícono Emulador de ondulación de nuevo y haga clic en Start Ripple Services si no se inician automáticamente.

  7. Configure la plataforma de destino (dispositivo) y disfrute de la aplicación PhoneGap que funciona localmente.

Versión y diferencias de API

También debe mantener su ojo en PhoneGap API y verificar cuidadosamente qué estaba disponible y cómo se podía acceder en PhoneGap 2.0.0. Por ejemplo, la verificación simple del tipo de conexión ha cambiado desde entonces. En la 2.9.0 API , se realiza a través de navigator.connection , mientras que en la API 2.0.0 se accedió a la interfaz navigator.network .

Dado que Ripple Emulator usa PhoneGap 2.0.0, la forma actualmente compatible de llamar a este objeto:

var networkState = navigator.connection.type;

fallará. Tendrás que usarlo de esta manera:

var networkState = navigator.network.connection.type;

Aunque puede seleccionar la versión de PhoneGap, al compilar en PhoneGap Build (y puede forzarlo a usar la versión 2.0.0, aunque compile este código sin cambios), querrá desarrollar su aplicación utilizando la versión más nueva de PhoneGap.

En este caso, debe usar un enfoque "seguro", que funcionará tanto en Ripple como en PhoneGap:

var networkState = ((navigator.connection) ? navigator.connection.type : ((navigator.network && navigator.network.connection) ? navigator.network.connection.type : ''unknown''));

O puede declarar alguna variable especial:

var debugMode = typeof(window.tinyHippos) !== ''undefined'';

Y utilízalo como un interruptor:

var networkState = (debugMode) ? navigator.network.connection.type : navigator.connection.type;

Afortunadamente, Ripple se actualizará pronto a la PhoneGap más nueva para que podamos descartar esas cosas .