Event Listeners en Cordova para Android y iOS

Al empezar una aplicación de Cordova una de las primeras cosas a tener en cuenta son sus event listeners, relacionados con el ciclo de vida de una app. Se trata de unos pocos eventos que conviene tener en cuenta, especialmente cuando tenemos que conservar cambios o estados al pasar nuestra aplicación a segundo plano (porque entra una llamada o porque el usuario aprieta el backbutton) y al volver a primer plano.

Así que examinemos brevemente estos event listeners:

Relacionados con el Ciclo de Vida

deviceready

el evento esencial, marca cuando Cordova está cargada y preparada para accederse, para evitar que la parte del Javascript sea llamada antes de que esté accesible en el DOM. Una vez se dispara este evento, el sistema ya escucha nuestra programación.

pause

se dispara cuando una aplicación pasa a segundo plano o background (ver especificaciones particulares para iOS). Es especialmente importante para guardar estados o datos importantes que no queramos que el usuario pierda.

resume

se dispara cuando una aplicación pasa a primer plano (ver especificaciones particulares para iOS)

Relacionados con los Botones (sólo Android)

backbutton

sobrescribe el comportamiento por defecto del botón de ir atrás

menubutton

sobrescribe el comportamiento por defecto del botón de menú

searchbutton

sobrescribe el comportamiento por defecto del botón de buscar

Ejemplos

function writeConsole() {
 console.log("DEVICE READY");
 document.addEventListener("pause", onPause, false);
 document.addEventListener("resume", onResume, false);
 document.addEventListener("backbutton", onBackKeyDown, false);
 document.addEventListener("menubutton", onMenuKeyDown, false);
 document.addEventListener("searchbutton", onSearchKeyDown, false);
 cordova.plugins.email.isAvailable( function (isAvailable) {
 console.log("EMAIL PLUGIN AVAILABLE");
 });
}
function onPause() {
 console.log("ON PAUSE");
}
function onResume() {
 console.log("ON RESUME");
}
function onBackKeyDown() {
 console.log("ON BACK KEY DOWN");
}
function onMenuKeyDown() {
 console.log("ON MENU KEY DOWN");
}
function onSearchKeyDown() {
 console.log("ON SEARCH KEY DOWN");
}

Ponemos nuestra llamada a writeConsole() en el ready del documento. El ready dependerá del framework de vista que utilicemos. Por ejemplo, si utilizamos (muy recomendable) ionic, lo deberíamos poner en el $ionicPlatform.ready:

.run(function($ionicPlatform) {
  $ionicPlatform.ready(function() {
    if(window.cordova && window.cordova.plugins.Keyboard) {
      cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
    }
    if(window.StatusBar) {
      StatusBar.styleDefault();
    }
    writeConsole()
  });
})

Más información en la página oficial de Cordova.

 

Cómo debugar una web app en Chrome

Cuando hacemos una web app, ya sea con jQuery Mobile, con Ionic, con Sencha Touch, etc., una de las cosas que más quisiéramos tener es poder actuar con la web app con F12 y ver y depurar todos los procesos. Es cierto que podemos abrir la app con el navegador, pero no es lo mismo, ya que muchas llamadas u otros procesos se pierden.

Pues bien, entre otros métodos que analizaremos en futuros artículos, hoy queremos comentar la herramienta que nos ofrece Google Chrome. Así es, debugar una aplicación web con Google Chrome es posible a partir de Android 4.0!

Tenéis toda la documentació en la página de desarrollo de Chrome, pero vamos a ver los pasos principales.

Paso 1: Requisitos

Como desarrolladores de web apps, ya tendréis habilitada la conexión USB developer entre el teléfono y el ordenador (en caso de que no fuera así, el tutorial de Chrome incluye también instrucciones, o podéis también consultar aquí: http://www.fandroides.com/que-es-y-como-habilitar-la-depuracion-usb-en-android/; recordad también de instalar los controladores usb de vuestro dispositivos, que normalmente se encuentran en la web del fabricante o incluido en los paquetes de instalación (como el KIES en el caso de Samsung). Para la conexión es lo único que necesitamos.

Paso 2: Google Chrome

En Chrome nos vamos a:

Menú -> Más Herramientas ->Inspeccionar dispositivos

Se abrirá la pestaña de DevTools y el apartado devices.

Menú > Más Herramientas > Inspeccionar Dispositivos

Menú > Más Herramientas > Inspeccionar Dispositivos

Paso 3: Debugar

Nos aseguramos de que “Discover USB devices” está marcado, y nos aseguramos de que nuestro dispositivo ha sido encontrado.

Si tenemos alguna web view activa (nuestra app u otra), ésta se mostrará; si no en cuanto la abramos se mostrará.

Una vez se muestre la app, podemos hacer click en “inspect”, y se mostrará nuestro conocido F12 (en caso de que no sea conocido, podéis echarle un vistazo a este tutorial: https://developer.chrome.com/devtools )

Chrome DevTools - Inspect Devices

Chrome DevTools – Inspect Devices

Como hemos dicho, hay otras herramientas, pero esta es una rápida y magnífica manera de conseguir debigar de verdad una web app!

 

Como instalar Ionic para trabajar con Cordova en entorno Android

Recientemente ha saltado con fuerza a la cyber-palestra un framework para mobile apps que une las ventajas de jQuery Mobile y las de Bootstrap junto con los avances en programación web de la mano de Angular.js. Hablamos de Ionic.

Ionic Framework Logo

Ionic Framework

Si bien su getting started es muy claro y sencillo, hemos creado esta pequeña continuación de nuestro tutorial sobre la instalación y configuración de Cordova 3 porque consideramos que en breve esta será la manera de trabajar con Cordova 3.

Pasos 1-3

Corresponden a la instalación de todo el entorno Android y Java. Son los pasos 1 a 3 de nuestro mencionado artículo sobre la instalación y configuración de Cordova 3.

En cuanto al IDE de desarrollo, podemos optar por el Eclipe ADT que aparece en nuestro tutorial, o podéis probar el flamante, aunque todavía en fase beta, Android Studio.

Paso 4

Queremos trabajar con Cordova utilizando Ionic y Angular, de manera que instalaremos ambos a la vez. Abrimos la consola y escribimos:

$ npm install -g cordova ionic

De hecho van tan unidos que a partir de la instalación de ionic, vamos a hacer las tareas de Cordova en su CLI mediante el comando ionic.

Paso 5

Creamos nuestra primera app. Ionic ofrece algunas plantillas de base para empezar. Algunas con elementos que probablemente utilicemos, y una vacía.

Nos situamos en la carpeta de neustro workspace (el comando de ionic creará por nosotros la carpeta del proyecto) y escribimos:

$ ionic start "nombre de la app" "plantilla"

Así, si queremos iniciar una app vacía:

$ ionic start miPrimeraApp blank

Si queremos iniciar una nueva app con tabuladores:

$ ionic start miPrimeraApp tabs

 

Si queremos iniciar una con menú lateral:

$ ionic start miPrimeraApp sidemenu

 

Paso 6

No olvidemos que queremos trabajar con Cordova y Ionic, pero también con Android, de manera que tenemos que añadir también al proyecto la plataforma Android y hacer un build. Para ello nos siatuamos en la nueva carpeta (en este caso miPrimeraApp):

$ cd miPrimeraApp

Añadimos la plataforma Android:

$ ionic platform add android

Lo mismo haríamos con su equivalente ios. Para Windows Phone podéis consultar este link al foro de Ionic.

Hacemos build:

$ ionic build android

Y ya podemos deployar. Con emulate para emulador o run para dispositivo:

$ ionic emulate android
$ ionic run android

Paso 7

Para trabajar con Ionic podemos utilizar cualquier editor de texto, como nuestro preferido Sublime 3, o el más caro pero al parecer más adecuado para javascript y preferido por muchos desarrolladores de Angular WebStorm.

En todo caso, para trabajar con Android sí queremos el mencionado Eclipse ADT o el Android Studio. Para ver cómo cargamos en nuestro Eclipse esta primera aplicación Cordova con Android, lo abrís desde el Eclipse como un Nuevo Proyecto Android desde Código Existente, tal y como se ve en nustro artículo sobre Córdova 3.

Y hasta aquí. ¡Buena suerte, y a disfrutar de este nuevo framework!