PhoneGap !Qué bueno que viniste¡

28
www.autentia.com PhoneGap ¡Qué bueno que viniste! ¡Qué bueno que viniste! @raguilera82 github.com/raguilera82 [email protected]

description

Transparencias de la charla sobre PhoneGap que se impartió en la UPM Sur. El video de la charla lo puedes encontrar en aquí: https://www.youtube.com/watch?v=WpHaFhrPlfA&list=UUvZ6HKYcDtqtK1SfbIpB97g

Transcript of PhoneGap !Qué bueno que viniste¡

Page 1: PhoneGap !Qué bueno que viniste¡

www.autentia.com

PhoneGap¡Qué bueno que viniste!

¡Qué bueno que viniste!

@raguilera82github.com/[email protected]

Page 2: PhoneGap !Qué bueno que viniste¡

www.autentia.com

¿Quién soy yo?

Consultor Sénior en Autentia.

+10 años en este mundillo.

Aprendiz permanente, maestro ocasional.

Page 3: PhoneGap !Qué bueno que viniste¡

www.autentia.com

¿Dónde trabajo?Gestionamos conocimiento interno públicamente:● Sin comerciales● Adictosaltrabajo.com● < 30 personas● > 10 años● > 1.300 tutoriales● > 24 MM descargas

Page 4: PhoneGap !Qué bueno que viniste¡

www.autentia.com

¿Cómo trabajamos?

Page 5: PhoneGap !Qué bueno que viniste¡

www.autentia.com

SituaciónQueremos desarrollar una aplicación móvil que se pueda ejecutar en la mayoría de dispositivos.

Actualmente las plataformas significativas son:● Android (86.2 %) -- Java● IOS (6.7 %) -- Objective-C● Windows Phone (5.6 %) -- C#● FirefoxOS (se espera que crezca con el apoyo de

Telefónica) -- HTML5, CSS3 y Javascript

Page 6: PhoneGap !Qué bueno que viniste¡

www.autentia.com

ProblemasNecesitamos conocer todas las tecnologías: Java, Objective-C, C#, HTML5, CSS3, Javascript.

El tiempo y por tanto el coste de desarrollo de una aplicación se multiplica por el número de plataformas soportadas.

Lo ideal sería desarrollar una única aplicación.

Page 7: PhoneGap !Qué bueno que viniste¡

www.autentia.com

1º Solución: Aplicación WebCreamos una aplicación web que sea ejecutada con el navegador del dispositivo.Problemas:● No podemos hacer uso de las funcionalidades del

móvil como la cámara, los contactos, etc..● No podemos aprovechar los markets para la

distribución de la aplicación.● La ejecución va a depender del navegador que se

esté utilizando.

Page 8: PhoneGap !Qué bueno que viniste¡

www.autentia.com

2º Solución: Aplicación HíbridaSon aplicaciones web (HTML5, CSS3 y Javascript) que acceden a las funciones nativas de los dispositivos pero de una determinada plataforma.

Aprovechamos el market de esa plataforma.

Si queremos ejecutar nuestra aplicación en otra plataforma tenemos que hacer otro desarrollo híbrido específico para esa plataforma.

Page 9: PhoneGap !Qué bueno que viniste¡

www.autentia.com

3º Solución: PhoneGap / CordovaCreamos una aplicación híbrida con HTML5, CSS3 y Javascript y la podemos ejecutar directamente en todas las plataformas soportadas.

Podemos hacer uso de las funcionalidades del móvil gracias a un API Javascript que se adapta a cada plataforma.

Podemos publicar la aplicación en los markets de cada plataforma.

Page 10: PhoneGap !Qué bueno que viniste¡

www.autentia.com

API Reference (3.4)FileGeolocationGlobalizationInAppBrowserMediaNotificationSplashscreenStorage

AccelerometerCameraCaptureCompassConnectionContactsDeviceEvents

Page 11: PhoneGap !Qué bueno que viniste¡

www.autentia.com

Historia2008, la empresa Nitobi presenta PhoneGap en el iPhoneDevCamp.

2011, Adobe compra Nitobi y PhoneGap se convierte en la distribución del proyecto libre Apache Cordova.

2012, Adobe presenta PhoneGap Build, plataforma de pago que permite la construcción y distribución de estas aplicaciones en la nube.

Page 12: PhoneGap !Qué bueno que viniste¡

www.autentia.com

PhoneGap Build

Page 13: PhoneGap !Qué bueno que viniste¡

www.autentia.com

PhoneGap Build

Page 14: PhoneGap !Qué bueno que viniste¡

www.autentia.com

Empezando con PhoneGapPara instalar PhoneGap necesitamos tener instalado Node en nuestra máquina. http://nodejs.org

Después ejecutamos en un terminal:

sudo npm install -g phonegap

sudo npm install -g cordova

Page 15: PhoneGap !Qué bueno que viniste¡

www.autentia.com

Crear primer proyectoAbrimos un terminal y ejecutamos:

cordova create HolaMundo com.autentia.holamundo “Hola Mundo”

1º Es el path de la carpeta del proyecto2º Es el id del widget (Opcional)3º Es el nombre del proyecto (Opcional)

Page 16: PhoneGap !Qué bueno que viniste¡

www.autentia.com

Estructura del proyectomerges: para personalizar código.

platforms: contiene cada uno de los proyectos por plataforma.

plugins: para extender funcionalidad por plataforma.

www: contiene los ficheros fuentes de la aplicación.

Page 17: PhoneGap !Qué bueno que viniste¡

www.autentia.com

PluginsEs la mejor forma de extender funcionalidad. Existen muchos plugins listos para ser utilizados (https://build.phonegap.com/plugins)

cordova plugins ls

cordova plugins add org.apache.cordova.camera

cordova plugins rm org.apache.cordova.camera

Page 18: PhoneGap !Qué bueno que viniste¡

www.autentia.com

PlatformsEs momento de añadir las plataformas que queramos soportar.

Importante: Nuestra máquina de desarrollo tiene que estar preparada para la plataforma en cuestión.

Ej: no puedo desarrollar para wp8 fuera de Windows 8.

cordova platforms add ios android wp8 firefoxos

Page 19: PhoneGap !Qué bueno que viniste¡

www.autentia.com

wwwAquí es donde vamos a desarrollar nuestra aplicación con HTML5, CSS3 y Javascript.

Podemos utilizar cualquier framework de front-end como AngularJS, Ember, Backbone, etc...

Nos crea una aplicación de ejemplo lista para desplegar.

Page 20: PhoneGap !Qué bueno que viniste¡

www.autentia.com

Construir la aplicaciónPara construir la aplicación para todas las plataformas dadas de alta:

cordova build

Para una específica:

cordova build [ios | android | wp8]

Page 21: PhoneGap !Qué bueno que viniste¡

www.autentia.com

Construir para FirefoxOSEl caso de FirefoxOS es algo especial dado que no tiene binarios basta con ejecutar:

cordova prepare

Para una específica:

cordova prepare firefoxos

Page 22: PhoneGap !Qué bueno que viniste¡

www.autentia.com

Probar la aplicaciónPodemos emular la aplicación en una plataforma específica:

cordova emulate [ios | android]

Podemos arrancar en un dispositivo físico:

cordova run [ios | android]

Page 23: PhoneGap !Qué bueno que viniste¡

www.autentia.com

Desmontando la magiaSe trata de una aplicación híbrida que conecta con las clases nativas a través de su API Javascript.

cordova.exec(successCallback, failCallback, “Clase”, “accion”, args)

En cada plataforma implementamos la acción como corresponda:public class Clase extends CordovaPlugin{

public boolean execute(String accion, JSONArray args, CallbackContext callbackContext){}

}

Page 24: PhoneGap !Qué bueno que viniste¡

www.autentia.com

Cosas a tener en cuentaNos crea proyectos independientes para cada una de las plataformas dadas de alta que se pueden abrir con las herramientas específicas.

En determinados procesos puede empeorar la experiencia de usuario con respecto a aplicaciones puramente nativas.

La distribución en los markets depende de las condiciones de cada plataforma: licencias, costes, iconos, ...

Page 25: PhoneGap !Qué bueno que viniste¡

www.autentia.com

Buenas prácticasDesarrollar inicialmente para FirefoxOS por su facilidad de debug y la rapidez del simulador.

Probar en el resto de plataformas y solucionar diferencias a través de “merges” y “plugins”.

Page 26: PhoneGap !Qué bueno que viniste¡

www.autentia.com

Buenas prácticasSiempre personalizar las interfaces a través de la carpeta “merges”.

Siempre extender la funcionalidad con la creación de plugins reutilizables para cada una de las plataformas.

Solo subir al control de versiones las carpetas “merges” y “www”. El resto del proyecto se genera desde la plataforma específica.

Page 27: PhoneGap !Qué bueno que viniste¡

www.autentia.com

Page 28: PhoneGap !Qué bueno que viniste¡

www.autentia.com

“Somos pocos, somos buenos, estamos motivados y nos gusta lo que hacemos”