SlideShare una empresa de Scribd logo
1 de 53
Descargar para leer sin conexión
Aplicaciones
multiplataforma
Ignacio Muñoz Vicente
@imunoz_
17 y 18 Septiembre 2015
Un poco de mi
Ignacio Muñoz Vicente
Ingeniero informático
Mobile Tech Leader

(Hiberus Tecnología)
@imunoz_ (linkedin + slideshare)
Co-autor libro desarrollo
de aplicaciones para iOS

(SEAS Estudios Superiores)
Certificado

Scrum Manager
Certificado

Kanban Foundation
Ingeniero Software

Telefónica I+D / Aurigae
Emprendiendo

proyectos de movilidad
Índice
Jueves
Viernes
- Apps híbridas
- Diferencia entre nativas e híbridas
- Cómo funciona
- Ventajas e inconvenientes
- Ejemplos
- Historia
- Programar - prueba de los conceptos
- Otras herramientas y tecnologías
- Single Page Applications
- Frameworks
- Herramientas de trabajo
- AngularJS
- Ionic Framework
- Repaso general
Antes de empezar…
Descargar e instalar para usar luego
- nodeJS: https://nodejs.org
- GIT: https://git-scm.com/
- Editor de textos. Ej. Sublime Text: http://www.sublimetext.com/
- Para iOS:
- Xcode (en App Store)
- Para Android:
- JDK 7: http://www.oracle.com/technetwork/es/java/javase/downloads/jdk7-
downloads-1880260.html
- SDK: http://developer.android.com/sdk/index.html
- Si Windows: Visual Studio: https://www.visualstudio.com/
Apps híbridas
Diferencia entre apps nativas e híbridas
App nativa
https://octopusapps.com/blog/wp-content/uploads/2014/04/img-post-02.jpg
Apps híbridas
Diferencia entre apps nativas e híbridas
App nativa App híbrida
https://octopusapps.com/blog/wp-content/uploads/2014/04/img-post-02.jpg
Apps híbridas
Diferencia entre apps nativas e híbridas
HTML5 + JS + CSS3
+ Frameworks
Apps híbridas
Diferencia entre apps nativas e híbridas
WebView Android, Safari,
Crosswalk, CocoonJS
Apps híbridas
Diferencia entre apps nativas e híbridas
Código nativo:
- Java
- Swift / ObjectiveC
Apps híbridas
Diferencia entre apps nativas e híbridas
Integrador entre JS
y código nativo
Apps híbridas
Diferencia entre apps nativas e híbridas
Sistema operativo:
- Android
- iOS
- Windows
- Blackberry OS
- Etc.
Apps híbridas
Diferencia entre apps nativas e híbridas
HTML5 + JS + CSS3
+ Frameworks
WebView Android, Safari,
Crosswalk, CocoonJS Código nativo:
- Java
- Swift / ObjectiveC
Integrador entre JS
y código nativo
Sistema operativo:
- Android
- iOS
- Windows
- Blackberry OS
- Etc.
Apps híbridas
Diferencia entre apps nativas e híbridas
http://es.slideshare.net/ejlp12/intro-to-apache-cordova
Apps híbridas
Cómo funciona Desarrollamos la aplicación:
- Diseño y maquetación: HTML 5 + CSS 3
- Programación: JS
Apps híbridas
Cómo funciona
Encapsulamos la aplicación con
(por ejemplo) Apache Cordova
Apps híbridas
Cómo funciona
OTROS
Desplegamos en las plataformas deseadas
Apps híbridas
Cómo funciona
Plugin
Código nativo Si necesitamos funcionalidad nativa, implementarla + crear plugin (por cada plataforma)
OTROS
Apps híbridas
Cómo funciona
Plugin
Código nativo Si necesitamos funcionalidad nativa, implementarla + crear plugin (por cada plataforma)
OTROS
Desplegamos en las plataformas deseadas
Encapsulamos la aplicación con
(por ejemplo) Apache Cordova
Desarrollamos la aplicación:
- Diseño y maquetación: HTML 5 + CSS 3
- Programación: JS
Apps híbridas
Ventajas e inconvenientes
App híbrida Apps nativas
- Menor tiempo de desarrollo

(excepto si se requiere muchas funcionalidad nativas)
- Mantenimiento y mejoras más sencillo

(un solo código que mantener)
- Un solo lenguaje: JavaScript
(un solo perfil de programación es necesario)
- Rendimiento mayor

(por norma general)
- Animaciones y transiciones de calidad

(al utilizar directamente los componentes nativos)
Apps híbridas
Coste temporal
App híbrida
App nativa Android
App nativa iOS
App nativa Windows
VS
1 3
Apps híbridas
Coste temporal
App híbrida
App nativa Android
App nativa iOS
App nativa Windows
VS
1 3
Apps híbridas
Coste temporal
App híbrida
1,5
- Maquetación y diseño CSS3 más costoso
- Despliegue y pruebas en los distintos SO
- Problemas de compatibilidad o rendimiento
- Soporte HTML5 / CSS3 en dispositivos antiguos
Apps híbridas
JavaScript
Mucha más info en: http://githut.info/
Apps híbridas
¿Qué tipo de desarrollo se utiliza?
Casi siempre es una decisión
basada en el presupuesto
disponible
Apps híbridas
Ejemplos
HE Mango Evernote Uber
Un poco de historia
Nitobi crea PhoneGap
2009
2011 Sept

Nitobi dona el código de PhoneGap
a la fundación Apache
Adobe compra Nitobi
2011 Oct
2012 Feb

Apache renombra el proyecto
como Cordova
Adobe lanza PhoneGap Build
2012
Adobe es hackeado
2013 Oct
A programar un poco
- Apache Cordova
- Proyecto
- Uso de API
- Cordova CLI
- Plugins
- Uso de plugin de terceros
- Creación de uno propio
- Despliegue en terminales
- Depuración
Vamos a jugar con…
A programar un poco
- Instalar Node + NPM:
- https://nodejs.org
- Instalar Apache Cordova:
- https://cordova.apache.org/
- $ npm install -g cordova
- Acceder a los docs de Cordova:
- http://cordova.apache.org/docs/en/5.0.0/
Antes de empezar
A programar un poco
- Crear proyecto Cordova:
- $ cordova create hello com.example.hello HelloWorld && cd hello
- Añadir SO / plataformas (se requiere SDK instalado):
- $ cordova platform add ios
- $ cordova platform add android
- $ cordova platforms ls
- Servir en el navegador (para debug):
- $ cordova serve
Paso 1: Proyecto inicial
A programar un poco
hooks

Permite ejecutar tareas automáticas cuando se ejecutan
comandos de Cordova
plataforms

Proyectos híbridos generados. En este ejemplo, proyecto Xcode
plugins

Contenedor de plugins utilizados en la aplicación
www

Aplicación HTML5 que se desplegará en todos los SO
config

Configuración de la app híbrida
A programar un poco
App iOS

Al añadirse la plataforma y compilar, Cordova
genera automáticamente el proyecto Xcode
preparado para ser utilizado.
Podemos seguir haciendo todo por línea de
comandos sin tener que abrir Xcode para nada.
A programar un poco
Paso 2: Configurar aplicación
<?xml version='1.0' encoding='utf-8'?>
<widget id="es.ai2aragon.hello" version="1.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<name>Demo</name>
<description>
Ejemplo presentación.
</description>
<author email="hola@ai2aragon.es" href="http://ai2aragon.es">
Ignacio ai2aragon
</author>
<content src="index.html" />
<plugin name="cordova-plugin-whitelist" version="1" />
<access origin="*" />
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
<allow-intent href="tel:*" />
<allow-intent href="sms:*" />
<allow-intent href="mailto:*" />
<allow-intent href="geo:*" />
<platform name="android">
<allow-intent href="market:*" />
</platform>
<platform name="ios">
<allow-intent href="itms:*" />
<allow-intent href="itms-apps:*" />
</platform>
</widget>
A programar un poco
Paso 2: Configurar aplicación
<?xml version='1.0' encoding='utf-8'?>
<widget id="es.ai2aragon.hello" version="1.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<name>Demo</name>
<description>
Ejemplo presentación.
</description>
<author email="hola@ai2aragon.es" href="http://ai2aragon.es">
Ignacio ai2aragon
</author>
<content src="index.html" />
<plugin name="cordova-plugin-whitelist" version="1" />
<access origin="*" />
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
<allow-intent href="tel:*" />
<allow-intent href="sms:*" />
<allow-intent href="mailto:*" />
<allow-intent href="geo:*" />
<platform name="android">
<allow-intent href="market:*" />
</platform>
<platform name="ios">
<allow-intent href="itms:*" />
<allow-intent href="itms-apps:*" />
</platform>
</widget>
$ cordova prepare
$ cordova compile
A programar un poco
Paso 2: Configurar aplicación
Otras configuraciones importantes:
<widget … android-versionCode=“X" ios-CFBundleVersion=“X.Y.Z">
<preference name="XXX" value="ZZZ" />
Ejemplos:
<preference name="Fullscreen" value="true" />
<preference name="DisallowOverscroll" value=“true"/>
<preference name="Orientation" value="landscape" />
<icon src="res/ios/icon.png" platform="ios" width="57" height="57" density="mdpi" />
<splash src="res/screen/ios/Default~iphone.png" width="320" height=“480"/>
Si se quiere configuración para sólo una plataforma:
<platform name=“ios”>
…
</platform>
A programar un poco
Paso 2: Configurar aplicación
Otras configuraciones importantes:
<widget … android-versionCode=“X" ios-CFBundleVersion=“X.Y.Z">
<preference name="XXX" value="ZZZ" />
Ejemplos:
<preference name="Fullscreen" value="true" />
<preference name="DisallowOverscroll" value=“true"/>
<preference name="Orientation" value="landscape" />
<icon src="res/ios/icon.png" platform="ios" width="57" height="57" density="mdpi" />
<splash src="res/screen/ios/Default~iphone.png" width="320" height=“480"/>
Si se quiere configuración para sólo una plataforma:
<platform name=“ios”>
…
</platform>
Truco: para generar todos los iconos:
http://makeappicon.com/
A programar un poco
- Buscar plugins:
- $ cordova plugin search XXXX YYYY ZZZZ
- http://plugins.cordova.io/npm/index.html
- Plugins más utilizados
- $ cordova plugin add cordova-plugin-device
- $ cordova plugin add cordova-plugin-network-information
- $ cordova plugin add cordova-plugin-geolocation
- $ cordova plugin add cordova-plugin-camera
- $ cordova plugin add cordova-plugin-contacts
- $ cordova plugin add cordova-plugin-console
Paso 3: Plugins
A programar un poco
Paso 3: Plugins
- Buscar plugins:
- $ cordova plugin search XXXX YYYY ZZZZ
- http://plugins.cordova.io/npm/index.html
- Plugins más utilizados
- $ cordova plugin add cordova-plugin-device
- $ cordova plugin add cordova-plugin-network-information
- $ cordova plugin add cordova-plugin-geolocation
- $ cordova plugin add cordova-plugin-camera
- $ cordova plugin add cordova-plugin-contacts
- $ cordova plugin add cordova-plugin-console
A programar un poco
Paso 4: Programar
Utilizar plugins anteriores:
http://cordova.apache.org/docs/en/5.0.0/cordova_plugins_pluginapis.md.html
Guardar datos en el dispositivo:
http://www.w3schools.com/html/html5_webstorage.asp
A programar un poco
Paso 4-B: SublimeText
- Cambiar ajustes: Preferences —> Settings -User
- Instalar Package Control—> https://packagecontrol.io/installation
- Instalar paquetes:
- JShint (instalar también via NPM)
- Package Control
- SublimeLinter-XXXX
- LESS o SASS
- SideBarEnhancements
A programar un poco
Paso 4: Programar
Ejemplo:
<button id="myButton">Make foto</button>
<img id="myImage" width="100px" height="100px" />
document.getElementById("myButton").addEventListener("touchend", getImage, false);
function getImage() {
navigator.camera.getPicture(onSuccess, onFail, {
quality: 50,
sourceType : Camera.PictureSourceType.PHOTOLIBRARY,
destinationType: Camera.DestinationType.DATA_URL
});
}
function onSuccess(imageData) {
var image = document.getElementById('myImage');
image.src = "data:image/jpeg;base64," + imageData;
}
function onFail(message) {
alert('Failed because: ' + message);
}
A programar un poco
Paso 5: Cómo funcionan los plugins
plugin.xml <plugin xmlns="http://apache.org/cordova/ns/plugins/1.0"
xmlns:rim="http://www.blackberry.com/ns/widgets"
xmlns:android="http://schemas.android.com/apk/res/android"
id="cordova-plugin-device"
version="1.0.1">
<name>Device</name>
<description>Cordova Device Plugin</description>
<license>Apache 2.0</license>
<keywords>cordova,device</keywords>
<repo>https://git-wip-us.apache.org/repos/asf/cordova-plugin-device.git</repo>
<issue>https://issues.apache.org/jira/browse/CB/component/12320648</issue>
<js-module src="www/device.js" name="device">
<clobbers target="device" />
</js-module>
<platform name="android">
<config-file target="res/xml/config.xml" parent="/*">
<feature name="Device" >
<param name="android-package" value="org.apache.cordova.device.Device"/>
</feature>
</config-file>
<source-file src="src/android/Device.java" target-dir="src/org/apache/cordova/device" />
</platform>
A programar un poco
Paso 5: Cómo funcionan los plugins
www/device.js
function Device() {
}
Device.prototype.getInfo = function(successCallback, errorCallback) {
argscheck.checkArgs('fF', 'Device.getInfo', arguments);
exec(successCallback, errorCallback, "Device", "getDeviceInfo", []);
};
module.exports = new Device();
A programar un poco
Paso 5: Cómo funcionan los plugins
src/android/Device.java
public class Device extends CordovaPlugin {
public Device() {
}
public void initialize(CordovaInterface cordova, CordovaWebView webView) {
super.initialize(cordova, webView);
Device.uuid = getUuid();
}
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
if (action.equals("getDeviceInfo")) {
JSONObject r = new JSONObject();
…
callbackContext.success(r);
}
else {
return false;
}
return true;
}
A programar un poco
Paso 5: Cómo funcionan los plugins
Crear uno propio
- plugins.xml
- archivo JS
- archivos nativos (.java, .h, .m, etc.)
- Publicar en github
- http://cordova.apache.org/docs/en/5.0.0/guide_hybrid_plugins_index.md.html#Plugin%20Development%20Guide
A programar un poco
Paso 6: Optimizar el código
- touch vs click (300ms)
- Transiciones CSS vs cambios del DOM
- Cache local: localStorage
- Controlar falta de conexión: estado offline
- Quitar JS y CSS no utilizados
- Configuraciones

http://cordova.apache.org/docs/en/5.0.0/guide_platforms_index.md.html#Platform%20Guides  
- merges/<platform>: ajustes por plataforma

https://cordova.apache.org/docs/en/4.0.0/guide_cli_index.md.html#The%20Command-Line%20Interface
A programar un poco
Paso 7: Depuración en dispositivo
Chrome Remote
Debugging:
1- Activar depuración USB en dispositivo
(si no aparece, hacer ‘truquillo’)
2- Conectar dispositivo
3- Ir a chrome://inspect y marcar el check
‘Discover USB devices’
Más info: screencasting + other config:
https://developer.chrome.com/devtools/docs/remote-
debugging
Safari Remote
Debugging:
1- Activar ‘Web inspector’ en ‘Ajustes’ —>
‘Safari’ —> Avanzado
2- En Safari (Mac) acceder al dispositivo
correspondiente en ‘Desarrollo’
(si no aparece, ir a ‘Preferencias’ —> ‘Avanzado’ —>
‘Mostrar el menú de desarrollo en la barra de menús’)
Otros
PhoneGap Build
https://build.phonegap.com/
Otros
PhoneGap Developer App
http://app.phonegap.com/
Otros
PhoneGap Enterprise
http://enterprise.phonegap.com/
Otros
Crosswalk project
https://crosswalk-project.org
Otros
CocoonJS
https://www.ludei.com/
A programar un poco
One more thing…
Cómo funciona Cordova en su parte nativa
A programar un poco
One more thing…
Si queremos añadir Cordova a un proyecto existente
y sólo en algunas partes del mismo:
http://cordova.apache.org/docs/en/5.0.0/guide_platforms_android_webview.md.html

Más contenido relacionado

La actualidad más candente

Aplicaciones híbridas: presente y futuro del desarrollo móvil
Aplicaciones híbridas: presente y futuro del desarrollo móvilAplicaciones híbridas: presente y futuro del desarrollo móvil
Aplicaciones híbridas: presente y futuro del desarrollo móvilatSistemas
 
Ionic y angular.js
Ionic y angular.jsIonic y angular.js
Ionic y angular.jsGDG Cali
 
Aplicaciones Móviles Híbridas
Aplicaciones Móviles HíbridasAplicaciones Móviles Híbridas
Aplicaciones Móviles HíbridasScio Consulting
 
Charla GDG Madrid: Cordova + AngularJS + Ionic
Charla GDG Madrid: Cordova + AngularJS + IonicCharla GDG Madrid: Cordova + AngularJS + Ionic
Charla GDG Madrid: Cordova + AngularJS + IonicRubén Aguilera
 
Desarrollo de aplicaciones moviles con Intel XDK
Desarrollo de aplicaciones moviles con Intel XDKDesarrollo de aplicaciones moviles con Intel XDK
Desarrollo de aplicaciones moviles con Intel XDKSoftware Guru
 
Aplicaciones Web móviles
Aplicaciones Web móvilesAplicaciones Web móviles
Aplicaciones Web móvilesAlberto Pobla
 
Mobile Day - Ionic 2
Mobile Day - Ionic 2Mobile Day - Ionic 2
Mobile Day - Ionic 2Software Guru
 
PhoneGap 2.1.0 Morelia
PhoneGap 2.1.0 MoreliaPhoneGap 2.1.0 Morelia
PhoneGap 2.1.0 MoreliaDaniel Ramos
 
Presentacion phonegap phonegapbuilt
Presentacion phonegap phonegapbuiltPresentacion phonegap phonegapbuilt
Presentacion phonegap phonegapbuiltChristhiam Cabrera
 
Desarrollo de Apps con la herramienta Phonegap
Desarrollo de Apps con la herramienta PhonegapDesarrollo de Apps con la herramienta Phonegap
Desarrollo de Apps con la herramienta PhonegapCongresoWeb
 
Firebase, la suite completa para convertir tu app en un éxito
Firebase, la suite completa para convertir tu app en un éxitoFirebase, la suite completa para convertir tu app en un éxito
Firebase, la suite completa para convertir tu app en un éxitoJorge Ventura
 
Desarrollo de apps híbridas HTML5 con intel XDK
Desarrollo de apps híbridas HTML5 con intel XDKDesarrollo de apps híbridas HTML5 con intel XDK
Desarrollo de apps híbridas HTML5 con intel XDKSoftware Guru
 
Presentación PhoneGap
Presentación PhoneGap Presentación PhoneGap
Presentación PhoneGap cccori
 
introduccion al desarrollo de aplicaciones android
introduccion al desarrollo de aplicaciones androidintroduccion al desarrollo de aplicaciones android
introduccion al desarrollo de aplicaciones androidJose Luis Bugarin Peche
 

La actualidad más candente (18)

Aplicaciones híbridas: presente y futuro del desarrollo móvil
Aplicaciones híbridas: presente y futuro del desarrollo móvilAplicaciones híbridas: presente y futuro del desarrollo móvil
Aplicaciones híbridas: presente y futuro del desarrollo móvil
 
Ionic y angular.js
Ionic y angular.jsIonic y angular.js
Ionic y angular.js
 
Aplicaciones Móviles Híbridas
Aplicaciones Móviles HíbridasAplicaciones Móviles Híbridas
Aplicaciones Móviles Híbridas
 
Charla GDG Madrid: Cordova + AngularJS + Ionic
Charla GDG Madrid: Cordova + AngularJS + IonicCharla GDG Madrid: Cordova + AngularJS + Ionic
Charla GDG Madrid: Cordova + AngularJS + Ionic
 
Desarrollo de aplicaciones moviles con Intel XDK
Desarrollo de aplicaciones moviles con Intel XDKDesarrollo de aplicaciones moviles con Intel XDK
Desarrollo de aplicaciones moviles con Intel XDK
 
Aplicaciones Web móviles
Aplicaciones Web móvilesAplicaciones Web móviles
Aplicaciones Web móviles
 
Mobile Day - Ionic 2
Mobile Day - Ionic 2Mobile Day - Ionic 2
Mobile Day - Ionic 2
 
PhoneGap 2.1.0 Morelia
PhoneGap 2.1.0 MoreliaPhoneGap 2.1.0 Morelia
PhoneGap 2.1.0 Morelia
 
Presentacion phonegap phonegapbuilt
Presentacion phonegap phonegapbuiltPresentacion phonegap phonegapbuilt
Presentacion phonegap phonegapbuilt
 
Desarrollo de Apps con la herramienta Phonegap
Desarrollo de Apps con la herramienta PhonegapDesarrollo de Apps con la herramienta Phonegap
Desarrollo de Apps con la herramienta Phonegap
 
Firebase, la suite completa para convertir tu app en un éxito
Firebase, la suite completa para convertir tu app en un éxitoFirebase, la suite completa para convertir tu app en un éxito
Firebase, la suite completa para convertir tu app en un éxito
 
Desarrollo de apps híbridas HTML5 con intel XDK
Desarrollo de apps híbridas HTML5 con intel XDKDesarrollo de apps híbridas HTML5 con intel XDK
Desarrollo de apps híbridas HTML5 con intel XDK
 
Presentación PhoneGap
Presentación PhoneGap Presentación PhoneGap
Presentación PhoneGap
 
Web Apps
Web AppsWeb Apps
Web Apps
 
introduccion al desarrollo de aplicaciones android
introduccion al desarrollo de aplicaciones androidintroduccion al desarrollo de aplicaciones android
introduccion al desarrollo de aplicaciones android
 
Tipos de aplicaciones
Tipos de aplicacionesTipos de aplicaciones
Tipos de aplicaciones
 
Tipos de aplicaciones - grupo electronica
Tipos de aplicaciones - grupo electronicaTipos de aplicaciones - grupo electronica
Tipos de aplicaciones - grupo electronica
 
Tipos de aplicaciones
Tipos de aplicacionesTipos de aplicaciones
Tipos de aplicaciones
 

Destacado

Abra sua cabeça, apps híbridos - PhoneGap/Cordova
Abra sua cabeça, apps híbridos - PhoneGap/CordovaAbra sua cabeça, apps híbridos - PhoneGap/Cordova
Abra sua cabeça, apps híbridos - PhoneGap/CordovaGustavo Costa
 
Instalacion Apache Cordova Tecnologías Moviles
Instalacion Apache Cordova Tecnologías MovilesInstalacion Apache Cordova Tecnologías Moviles
Instalacion Apache Cordova Tecnologías MovilesBruno Gutierrez
 
Desarrollo de aplicaciones móviles con Ionic y Apache Cordova
Desarrollo de aplicaciones móviles con Ionic y Apache CordovaDesarrollo de aplicaciones móviles con Ionic y Apache Cordova
Desarrollo de aplicaciones móviles con Ionic y Apache CordovaAlián Rigñack Quevedo
 
Desarrollo de aplicaciones moviles
Desarrollo de aplicaciones movilesDesarrollo de aplicaciones moviles
Desarrollo de aplicaciones movilesRoberto Perales
 
Desenvolvimento de Aplicativo Multiplataforma com Intel® XDK
Desenvolvimento de Aplicativo Multiplataforma com  Intel® XDKDesenvolvimento de Aplicativo Multiplataforma com  Intel® XDK
Desenvolvimento de Aplicativo Multiplataforma com Intel® XDKEvandro Paes
 
Guía rápida para la creación de un Blog en Wordpress.com
Guía rápida para la creación de un Blog en Wordpress.comGuía rápida para la creación de un Blog en Wordpress.com
Guía rápida para la creación de un Blog en Wordpress.comAdri Salazar
 
Research Report 2015
Research Report 2015Research Report 2015
Research Report 2015Daniel Maembe
 
Dossier de producto QABI
Dossier de producto QABIDossier de producto QABI
Dossier de producto QABIDaniel Téllez
 
Amor y amistad 2 kim
Amor y amistad 2 kimAmor y amistad 2 kim
Amor y amistad 2 kimkimbisita22
 
"Pocos metros y mucho orden": la decoradora Margarida Muñoz en la revista Cos...
"Pocos metros y mucho orden": la decoradora Margarida Muñoz en la revista Cos..."Pocos metros y mucho orden": la decoradora Margarida Muñoz en la revista Cos...
"Pocos metros y mucho orden": la decoradora Margarida Muñoz en la revista Cos...Margarida Muñoz
 
Cyber Warfare e scenari di mercato
Cyber Warfare e scenari di mercatoCyber Warfare e scenari di mercato
Cyber Warfare e scenari di mercatoHP Enterprise Italia
 

Destacado (20)

Abra sua cabeça, apps híbridos - PhoneGap/Cordova
Abra sua cabeça, apps híbridos - PhoneGap/CordovaAbra sua cabeça, apps híbridos - PhoneGap/Cordova
Abra sua cabeça, apps híbridos - PhoneGap/Cordova
 
Instalacion Apache Cordova Tecnologías Moviles
Instalacion Apache Cordova Tecnologías MovilesInstalacion Apache Cordova Tecnologías Moviles
Instalacion Apache Cordova Tecnologías Moviles
 
Android Superstar - Buenas Prácticas
Android Superstar - Buenas PrácticasAndroid Superstar - Buenas Prácticas
Android Superstar - Buenas Prácticas
 
Rest
RestRest
Rest
 
Desarrollo de aplicaciones móviles con Ionic y Apache Cordova
Desarrollo de aplicaciones móviles con Ionic y Apache CordovaDesarrollo de aplicaciones móviles con Ionic y Apache Cordova
Desarrollo de aplicaciones móviles con Ionic y Apache Cordova
 
Desarrollo de aplicaciones moviles
Desarrollo de aplicaciones movilesDesarrollo de aplicaciones moviles
Desarrollo de aplicaciones moviles
 
Desenvolvimento de Aplicativo Multiplataforma com Intel® XDK
Desenvolvimento de Aplicativo Multiplataforma com  Intel® XDKDesenvolvimento de Aplicativo Multiplataforma com  Intel® XDK
Desenvolvimento de Aplicativo Multiplataforma com Intel® XDK
 
Minicurso Intel XDK
Minicurso Intel XDKMinicurso Intel XDK
Minicurso Intel XDK
 
Introducción a xamarin
Introducción a xamarinIntroducción a xamarin
Introducción a xamarin
 
Guía rápida para la creación de un Blog en Wordpress.com
Guía rápida para la creación de un Blog en Wordpress.comGuía rápida para la creación de un Blog en Wordpress.com
Guía rápida para la creación de un Blog en Wordpress.com
 
Research Report 2015
Research Report 2015Research Report 2015
Research Report 2015
 
Manual tecnico
Manual tecnicoManual tecnico
Manual tecnico
 
Dossier de producto QABI
Dossier de producto QABIDossier de producto QABI
Dossier de producto QABI
 
Easy taxi
Easy taxiEasy taxi
Easy taxi
 
Amor y amistad 2 kim
Amor y amistad 2 kimAmor y amistad 2 kim
Amor y amistad 2 kim
 
0 bienvenida CUMBRE 2013
0 bienvenida CUMBRE 20130 bienvenida CUMBRE 2013
0 bienvenida CUMBRE 2013
 
"Pocos metros y mucho orden": la decoradora Margarida Muñoz en la revista Cos...
"Pocos metros y mucho orden": la decoradora Margarida Muñoz en la revista Cos..."Pocos metros y mucho orden": la decoradora Margarida Muñoz en la revista Cos...
"Pocos metros y mucho orden": la decoradora Margarida Muñoz en la revista Cos...
 
Cyber Warfare e scenari di mercato
Cyber Warfare e scenari di mercatoCyber Warfare e scenari di mercato
Cyber Warfare e scenari di mercato
 
Jovem Socialista 507
Jovem Socialista 507Jovem Socialista 507
Jovem Socialista 507
 
Folleto jugueteca-2014
Folleto jugueteca-2014Folleto jugueteca-2014
Folleto jugueteca-2014
 

Similar a Apps multiplataforma: Cómo funcionan y se desarrollan las aplicaciones híbridas

Taller mobile by trustparency
Taller mobile by trustparencyTaller mobile by trustparency
Taller mobile by trustparencytrustparency
 
Curso Iniciacion android
Curso Iniciacion androidCurso Iniciacion android
Curso Iniciacion androidZix Stdio
 
Mi primera app con GAE y GWT
Mi primera app con GAE y GWTMi primera app con GAE y GWT
Mi primera app con GAE y GWTGDG Lima
 
Mi primera App con GAE
Mi primera App con GAEMi primera App con GAE
Mi primera App con GAEGDG Lima
 
Seminario Android (Parte 1) - movilforum
Seminario Android (Parte 1) - movilforumSeminario Android (Parte 1) - movilforum
Seminario Android (Parte 1) - movilforumvideos
 
Desarrollo android - 3 - entorno de desarrollo
Desarrollo android  - 3 - entorno de desarrolloDesarrollo android  - 3 - entorno de desarrollo
Desarrollo android - 3 - entorno de desarrolloEmilio Aviles Avila
 
1. introduccion a_android__conceptos_basicos__entorno_de_desarrollo_eclipse
1. introduccion a_android__conceptos_basicos__entorno_de_desarrollo_eclipse1. introduccion a_android__conceptos_basicos__entorno_de_desarrollo_eclipse
1. introduccion a_android__conceptos_basicos__entorno_de_desarrollo_eclipseglorii piickolii
 
inLab FIB MeteorJS workshop by uLab UPC - Telefonica I+D
inLab FIB MeteorJS workshop by uLab UPC - Telefonica I+DinLab FIB MeteorJS workshop by uLab UPC - Telefonica I+D
inLab FIB MeteorJS workshop by uLab UPC - Telefonica I+DinLabFIB
 
Smad TI - Phonegap Aplicaciones Nativas Móviles con HTML5
Smad TI - Phonegap Aplicaciones Nativas Móviles con HTML5Smad TI - Phonegap Aplicaciones Nativas Móviles con HTML5
Smad TI - Phonegap Aplicaciones Nativas Móviles con HTML5Smad IT
 
Ingeniería inversa básica en android tomo ii
Ingeniería inversa básica en android tomo iiIngeniería inversa básica en android tomo ii
Ingeniería inversa básica en android tomo iiFreelance
 
Desarrollo de apps multiplataforma Movil
Desarrollo de apps multiplataforma MovilDesarrollo de apps multiplataforma Movil
Desarrollo de apps multiplataforma MovilIng Erick Guardado
 
Html 5
Html 5Html 5
Html 5Tensor
 
MobileCONGalicia Introducción a Android
MobileCONGalicia Introducción a AndroidMobileCONGalicia Introducción a Android
MobileCONGalicia Introducción a AndroidAlberto Ruibal
 
2.1 android cep jaen 2014 estructura de aplicación
2.1 android cep jaen 2014   estructura de aplicación2.1 android cep jaen 2014   estructura de aplicación
2.1 android cep jaen 2014 estructura de aplicaciónJose Antonio Vacas
 

Similar a Apps multiplataforma: Cómo funcionan y se desarrollan las aplicaciones híbridas (20)

Taller mobile by trustparency
Taller mobile by trustparencyTaller mobile by trustparency
Taller mobile by trustparency
 
Curso Iniciacion android
Curso Iniciacion androidCurso Iniciacion android
Curso Iniciacion android
 
Mi primera app con GAE y GWT
Mi primera app con GAE y GWTMi primera app con GAE y GWT
Mi primera app con GAE y GWT
 
Mi primera App con GAE
Mi primera App con GAEMi primera App con GAE
Mi primera App con GAE
 
Android Pres3
Android Pres3Android Pres3
Android Pres3
 
Seminario Android (Parte 1) - movilforum
Seminario Android (Parte 1) - movilforumSeminario Android (Parte 1) - movilforum
Seminario Android (Parte 1) - movilforum
 
Taller de desarrollo de aplicaciones móviles con la tecnología del SIG Corpor...
Taller de desarrollo de aplicaciones móviles con la tecnología del SIG Corpor...Taller de desarrollo de aplicaciones móviles con la tecnología del SIG Corpor...
Taller de desarrollo de aplicaciones móviles con la tecnología del SIG Corpor...
 
Desarrollo android - 3 - entorno de desarrollo
Desarrollo android  - 3 - entorno de desarrolloDesarrollo android  - 3 - entorno de desarrollo
Desarrollo android - 3 - entorno de desarrollo
 
Windows 10 Dev Readiness - Colombia
Windows 10 Dev Readiness - ColombiaWindows 10 Dev Readiness - Colombia
Windows 10 Dev Readiness - Colombia
 
1. introduccion a_android__conceptos_basicos__entorno_de_desarrollo_eclipse
1. introduccion a_android__conceptos_basicos__entorno_de_desarrollo_eclipse1. introduccion a_android__conceptos_basicos__entorno_de_desarrollo_eclipse
1. introduccion a_android__conceptos_basicos__entorno_de_desarrollo_eclipse
 
inLab FIB MeteorJS workshop by uLab UPC - Telefonica I+D
inLab FIB MeteorJS workshop by uLab UPC - Telefonica I+DinLab FIB MeteorJS workshop by uLab UPC - Telefonica I+D
inLab FIB MeteorJS workshop by uLab UPC - Telefonica I+D
 
Smad TI - Phonegap Aplicaciones Nativas Móviles con HTML5
Smad TI - Phonegap Aplicaciones Nativas Móviles con HTML5Smad TI - Phonegap Aplicaciones Nativas Móviles con HTML5
Smad TI - Phonegap Aplicaciones Nativas Móviles con HTML5
 
Ingeniería inversa básica en android tomo ii
Ingeniería inversa básica en android tomo iiIngeniería inversa básica en android tomo ii
Ingeniería inversa básica en android tomo ii
 
Desarrollo de apps multiplataforma Movil
Desarrollo de apps multiplataforma MovilDesarrollo de apps multiplataforma Movil
Desarrollo de apps multiplataforma Movil
 
Meetup app-moviles
Meetup app-movilesMeetup app-moviles
Meetup app-moviles
 
Html 5
Html 5Html 5
Html 5
 
Taller de Android
Taller de AndroidTaller de Android
Taller de Android
 
DotNetDom: El futuro de Xamarin
DotNetDom: El futuro de XamarinDotNetDom: El futuro de Xamarin
DotNetDom: El futuro de Xamarin
 
MobileCONGalicia Introducción a Android
MobileCONGalicia Introducción a AndroidMobileCONGalicia Introducción a Android
MobileCONGalicia Introducción a Android
 
2.1 android cep jaen 2014 estructura de aplicación
2.1 android cep jaen 2014   estructura de aplicación2.1 android cep jaen 2014   estructura de aplicación
2.1 android cep jaen 2014 estructura de aplicación
 

Último

12 Clasificacion de las Computadoras.pdf
12 Clasificacion de las Computadoras.pdf12 Clasificacion de las Computadoras.pdf
12 Clasificacion de las Computadoras.pdfedwinmelgarschlink2
 
institucion educativa la esperanza sede magdalena
institucion educativa la esperanza sede magdalenainstitucion educativa la esperanza sede magdalena
institucion educativa la esperanza sede magdalenajuniorcuellargomez
 
Buscadores, SEM SEO: el desafío de ser visto en la web
Buscadores, SEM SEO: el desafío de ser visto en la webBuscadores, SEM SEO: el desafío de ser visto en la web
Buscadores, SEM SEO: el desafío de ser visto en la webDecaunlz
 
02. Mr. Spencer (T.L. Sawn).pdf.libro de un señor
02. Mr. Spencer (T.L. Sawn).pdf.libro de un señor02. Mr. Spencer (T.L. Sawn).pdf.libro de un señor
02. Mr. Spencer (T.L. Sawn).pdf.libro de un señorkkte210207
 
Guia para el registro en el sitio slideshare.pdf
Guia para el registro en el sitio slideshare.pdfGuia para el registro en el sitio slideshare.pdf
Guia para el registro en el sitio slideshare.pdflauradbernals
 
Institucion educativa la esperanza sede la magdalena
Institucion educativa la esperanza sede la magdalenaInstitucion educativa la esperanza sede la magdalena
Institucion educativa la esperanza sede la magdalenadanielaerazok
 
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdfNUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdfisrael garcia
 
Las redes sociales en el mercado digital
Las redes sociales en el mercado digitalLas redes sociales en el mercado digital
Las redes sociales en el mercado digitalNayaniJulietaRamosRa
 
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENAINSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENAdanielaerazok
 

Último (9)

12 Clasificacion de las Computadoras.pdf
12 Clasificacion de las Computadoras.pdf12 Clasificacion de las Computadoras.pdf
12 Clasificacion de las Computadoras.pdf
 
institucion educativa la esperanza sede magdalena
institucion educativa la esperanza sede magdalenainstitucion educativa la esperanza sede magdalena
institucion educativa la esperanza sede magdalena
 
Buscadores, SEM SEO: el desafío de ser visto en la web
Buscadores, SEM SEO: el desafío de ser visto en la webBuscadores, SEM SEO: el desafío de ser visto en la web
Buscadores, SEM SEO: el desafío de ser visto en la web
 
02. Mr. Spencer (T.L. Sawn).pdf.libro de un señor
02. Mr. Spencer (T.L. Sawn).pdf.libro de un señor02. Mr. Spencer (T.L. Sawn).pdf.libro de un señor
02. Mr. Spencer (T.L. Sawn).pdf.libro de un señor
 
Guia para el registro en el sitio slideshare.pdf
Guia para el registro en el sitio slideshare.pdfGuia para el registro en el sitio slideshare.pdf
Guia para el registro en el sitio slideshare.pdf
 
Institucion educativa la esperanza sede la magdalena
Institucion educativa la esperanza sede la magdalenaInstitucion educativa la esperanza sede la magdalena
Institucion educativa la esperanza sede la magdalena
 
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdfNUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
 
Las redes sociales en el mercado digital
Las redes sociales en el mercado digitalLas redes sociales en el mercado digital
Las redes sociales en el mercado digital
 
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENAINSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
 

Apps multiplataforma: Cómo funcionan y se desarrollan las aplicaciones híbridas

  • 2. Un poco de mi Ignacio Muñoz Vicente Ingeniero informático Mobile Tech Leader
 (Hiberus Tecnología) @imunoz_ (linkedin + slideshare) Co-autor libro desarrollo de aplicaciones para iOS
 (SEAS Estudios Superiores) Certificado
 Scrum Manager Certificado
 Kanban Foundation Ingeniero Software
 Telefónica I+D / Aurigae Emprendiendo
 proyectos de movilidad
  • 3. Índice Jueves Viernes - Apps híbridas - Diferencia entre nativas e híbridas - Cómo funciona - Ventajas e inconvenientes - Ejemplos - Historia - Programar - prueba de los conceptos - Otras herramientas y tecnologías - Single Page Applications - Frameworks - Herramientas de trabajo - AngularJS - Ionic Framework - Repaso general
  • 4. Antes de empezar… Descargar e instalar para usar luego - nodeJS: https://nodejs.org - GIT: https://git-scm.com/ - Editor de textos. Ej. Sublime Text: http://www.sublimetext.com/ - Para iOS: - Xcode (en App Store) - Para Android: - JDK 7: http://www.oracle.com/technetwork/es/java/javase/downloads/jdk7- downloads-1880260.html - SDK: http://developer.android.com/sdk/index.html - Si Windows: Visual Studio: https://www.visualstudio.com/
  • 5. Apps híbridas Diferencia entre apps nativas e híbridas App nativa https://octopusapps.com/blog/wp-content/uploads/2014/04/img-post-02.jpg
  • 6. Apps híbridas Diferencia entre apps nativas e híbridas App nativa App híbrida https://octopusapps.com/blog/wp-content/uploads/2014/04/img-post-02.jpg
  • 7. Apps híbridas Diferencia entre apps nativas e híbridas HTML5 + JS + CSS3 + Frameworks
  • 8. Apps híbridas Diferencia entre apps nativas e híbridas WebView Android, Safari, Crosswalk, CocoonJS
  • 9. Apps híbridas Diferencia entre apps nativas e híbridas Código nativo: - Java - Swift / ObjectiveC
  • 10. Apps híbridas Diferencia entre apps nativas e híbridas Integrador entre JS y código nativo
  • 11. Apps híbridas Diferencia entre apps nativas e híbridas Sistema operativo: - Android - iOS - Windows - Blackberry OS - Etc.
  • 12. Apps híbridas Diferencia entre apps nativas e híbridas HTML5 + JS + CSS3 + Frameworks WebView Android, Safari, Crosswalk, CocoonJS Código nativo: - Java - Swift / ObjectiveC Integrador entre JS y código nativo Sistema operativo: - Android - iOS - Windows - Blackberry OS - Etc.
  • 13. Apps híbridas Diferencia entre apps nativas e híbridas http://es.slideshare.net/ejlp12/intro-to-apache-cordova
  • 14. Apps híbridas Cómo funciona Desarrollamos la aplicación: - Diseño y maquetación: HTML 5 + CSS 3 - Programación: JS
  • 15. Apps híbridas Cómo funciona Encapsulamos la aplicación con (por ejemplo) Apache Cordova
  • 16. Apps híbridas Cómo funciona OTROS Desplegamos en las plataformas deseadas
  • 17. Apps híbridas Cómo funciona Plugin Código nativo Si necesitamos funcionalidad nativa, implementarla + crear plugin (por cada plataforma) OTROS
  • 18. Apps híbridas Cómo funciona Plugin Código nativo Si necesitamos funcionalidad nativa, implementarla + crear plugin (por cada plataforma) OTROS Desplegamos en las plataformas deseadas Encapsulamos la aplicación con (por ejemplo) Apache Cordova Desarrollamos la aplicación: - Diseño y maquetación: HTML 5 + CSS 3 - Programación: JS
  • 19. Apps híbridas Ventajas e inconvenientes App híbrida Apps nativas - Menor tiempo de desarrollo
 (excepto si se requiere muchas funcionalidad nativas) - Mantenimiento y mejoras más sencillo
 (un solo código que mantener) - Un solo lenguaje: JavaScript (un solo perfil de programación es necesario) - Rendimiento mayor
 (por norma general) - Animaciones y transiciones de calidad
 (al utilizar directamente los componentes nativos)
  • 20. Apps híbridas Coste temporal App híbrida App nativa Android App nativa iOS App nativa Windows VS 1 3
  • 21. Apps híbridas Coste temporal App híbrida App nativa Android App nativa iOS App nativa Windows VS 1 3
  • 22. Apps híbridas Coste temporal App híbrida 1,5 - Maquetación y diseño CSS3 más costoso - Despliegue y pruebas en los distintos SO - Problemas de compatibilidad o rendimiento - Soporte HTML5 / CSS3 en dispositivos antiguos
  • 23. Apps híbridas JavaScript Mucha más info en: http://githut.info/
  • 24. Apps híbridas ¿Qué tipo de desarrollo se utiliza? Casi siempre es una decisión basada en el presupuesto disponible
  • 26. Un poco de historia Nitobi crea PhoneGap 2009 2011 Sept
 Nitobi dona el código de PhoneGap a la fundación Apache Adobe compra Nitobi 2011 Oct 2012 Feb
 Apache renombra el proyecto como Cordova Adobe lanza PhoneGap Build 2012 Adobe es hackeado 2013 Oct
  • 27. A programar un poco - Apache Cordova - Proyecto - Uso de API - Cordova CLI - Plugins - Uso de plugin de terceros - Creación de uno propio - Despliegue en terminales - Depuración Vamos a jugar con…
  • 28. A programar un poco - Instalar Node + NPM: - https://nodejs.org - Instalar Apache Cordova: - https://cordova.apache.org/ - $ npm install -g cordova - Acceder a los docs de Cordova: - http://cordova.apache.org/docs/en/5.0.0/ Antes de empezar
  • 29. A programar un poco - Crear proyecto Cordova: - $ cordova create hello com.example.hello HelloWorld && cd hello - Añadir SO / plataformas (se requiere SDK instalado): - $ cordova platform add ios - $ cordova platform add android - $ cordova platforms ls - Servir en el navegador (para debug): - $ cordova serve Paso 1: Proyecto inicial
  • 30. A programar un poco hooks
 Permite ejecutar tareas automáticas cuando se ejecutan comandos de Cordova plataforms
 Proyectos híbridos generados. En este ejemplo, proyecto Xcode plugins
 Contenedor de plugins utilizados en la aplicación www
 Aplicación HTML5 que se desplegará en todos los SO config
 Configuración de la app híbrida
  • 31. A programar un poco App iOS
 Al añadirse la plataforma y compilar, Cordova genera automáticamente el proyecto Xcode preparado para ser utilizado. Podemos seguir haciendo todo por línea de comandos sin tener que abrir Xcode para nada.
  • 32. A programar un poco Paso 2: Configurar aplicación <?xml version='1.0' encoding='utf-8'?> <widget id="es.ai2aragon.hello" version="1.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0"> <name>Demo</name> <description> Ejemplo presentación. </description> <author email="hola@ai2aragon.es" href="http://ai2aragon.es"> Ignacio ai2aragon </author> <content src="index.html" /> <plugin name="cordova-plugin-whitelist" version="1" /> <access origin="*" /> <allow-intent href="http://*/*" /> <allow-intent href="https://*/*" /> <allow-intent href="tel:*" /> <allow-intent href="sms:*" /> <allow-intent href="mailto:*" /> <allow-intent href="geo:*" /> <platform name="android"> <allow-intent href="market:*" /> </platform> <platform name="ios"> <allow-intent href="itms:*" /> <allow-intent href="itms-apps:*" /> </platform> </widget>
  • 33. A programar un poco Paso 2: Configurar aplicación <?xml version='1.0' encoding='utf-8'?> <widget id="es.ai2aragon.hello" version="1.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0"> <name>Demo</name> <description> Ejemplo presentación. </description> <author email="hola@ai2aragon.es" href="http://ai2aragon.es"> Ignacio ai2aragon </author> <content src="index.html" /> <plugin name="cordova-plugin-whitelist" version="1" /> <access origin="*" /> <allow-intent href="http://*/*" /> <allow-intent href="https://*/*" /> <allow-intent href="tel:*" /> <allow-intent href="sms:*" /> <allow-intent href="mailto:*" /> <allow-intent href="geo:*" /> <platform name="android"> <allow-intent href="market:*" /> </platform> <platform name="ios"> <allow-intent href="itms:*" /> <allow-intent href="itms-apps:*" /> </platform> </widget> $ cordova prepare $ cordova compile
  • 34. A programar un poco Paso 2: Configurar aplicación Otras configuraciones importantes: <widget … android-versionCode=“X" ios-CFBundleVersion=“X.Y.Z"> <preference name="XXX" value="ZZZ" /> Ejemplos: <preference name="Fullscreen" value="true" /> <preference name="DisallowOverscroll" value=“true"/> <preference name="Orientation" value="landscape" /> <icon src="res/ios/icon.png" platform="ios" width="57" height="57" density="mdpi" /> <splash src="res/screen/ios/Default~iphone.png" width="320" height=“480"/> Si se quiere configuración para sólo una plataforma: <platform name=“ios”> … </platform>
  • 35. A programar un poco Paso 2: Configurar aplicación Otras configuraciones importantes: <widget … android-versionCode=“X" ios-CFBundleVersion=“X.Y.Z"> <preference name="XXX" value="ZZZ" /> Ejemplos: <preference name="Fullscreen" value="true" /> <preference name="DisallowOverscroll" value=“true"/> <preference name="Orientation" value="landscape" /> <icon src="res/ios/icon.png" platform="ios" width="57" height="57" density="mdpi" /> <splash src="res/screen/ios/Default~iphone.png" width="320" height=“480"/> Si se quiere configuración para sólo una plataforma: <platform name=“ios”> … </platform> Truco: para generar todos los iconos: http://makeappicon.com/
  • 36. A programar un poco - Buscar plugins: - $ cordova plugin search XXXX YYYY ZZZZ - http://plugins.cordova.io/npm/index.html - Plugins más utilizados - $ cordova plugin add cordova-plugin-device - $ cordova plugin add cordova-plugin-network-information - $ cordova plugin add cordova-plugin-geolocation - $ cordova plugin add cordova-plugin-camera - $ cordova plugin add cordova-plugin-contacts - $ cordova plugin add cordova-plugin-console Paso 3: Plugins
  • 37. A programar un poco Paso 3: Plugins - Buscar plugins: - $ cordova plugin search XXXX YYYY ZZZZ - http://plugins.cordova.io/npm/index.html - Plugins más utilizados - $ cordova plugin add cordova-plugin-device - $ cordova plugin add cordova-plugin-network-information - $ cordova plugin add cordova-plugin-geolocation - $ cordova plugin add cordova-plugin-camera - $ cordova plugin add cordova-plugin-contacts - $ cordova plugin add cordova-plugin-console
  • 38. A programar un poco Paso 4: Programar Utilizar plugins anteriores: http://cordova.apache.org/docs/en/5.0.0/cordova_plugins_pluginapis.md.html Guardar datos en el dispositivo: http://www.w3schools.com/html/html5_webstorage.asp
  • 39. A programar un poco Paso 4-B: SublimeText - Cambiar ajustes: Preferences —> Settings -User - Instalar Package Control—> https://packagecontrol.io/installation - Instalar paquetes: - JShint (instalar también via NPM) - Package Control - SublimeLinter-XXXX - LESS o SASS - SideBarEnhancements
  • 40. A programar un poco Paso 4: Programar Ejemplo: <button id="myButton">Make foto</button> <img id="myImage" width="100px" height="100px" /> document.getElementById("myButton").addEventListener("touchend", getImage, false); function getImage() { navigator.camera.getPicture(onSuccess, onFail, { quality: 50, sourceType : Camera.PictureSourceType.PHOTOLIBRARY, destinationType: Camera.DestinationType.DATA_URL }); } function onSuccess(imageData) { var image = document.getElementById('myImage'); image.src = "data:image/jpeg;base64," + imageData; } function onFail(message) { alert('Failed because: ' + message); }
  • 41. A programar un poco Paso 5: Cómo funcionan los plugins plugin.xml <plugin xmlns="http://apache.org/cordova/ns/plugins/1.0" xmlns:rim="http://www.blackberry.com/ns/widgets" xmlns:android="http://schemas.android.com/apk/res/android" id="cordova-plugin-device" version="1.0.1"> <name>Device</name> <description>Cordova Device Plugin</description> <license>Apache 2.0</license> <keywords>cordova,device</keywords> <repo>https://git-wip-us.apache.org/repos/asf/cordova-plugin-device.git</repo> <issue>https://issues.apache.org/jira/browse/CB/component/12320648</issue> <js-module src="www/device.js" name="device"> <clobbers target="device" /> </js-module> <platform name="android"> <config-file target="res/xml/config.xml" parent="/*"> <feature name="Device" > <param name="android-package" value="org.apache.cordova.device.Device"/> </feature> </config-file> <source-file src="src/android/Device.java" target-dir="src/org/apache/cordova/device" /> </platform>
  • 42. A programar un poco Paso 5: Cómo funcionan los plugins www/device.js function Device() { } Device.prototype.getInfo = function(successCallback, errorCallback) { argscheck.checkArgs('fF', 'Device.getInfo', arguments); exec(successCallback, errorCallback, "Device", "getDeviceInfo", []); }; module.exports = new Device();
  • 43. A programar un poco Paso 5: Cómo funcionan los plugins src/android/Device.java public class Device extends CordovaPlugin { public Device() { } public void initialize(CordovaInterface cordova, CordovaWebView webView) { super.initialize(cordova, webView); Device.uuid = getUuid(); } public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException { if (action.equals("getDeviceInfo")) { JSONObject r = new JSONObject(); … callbackContext.success(r); } else { return false; } return true; }
  • 44. A programar un poco Paso 5: Cómo funcionan los plugins Crear uno propio - plugins.xml - archivo JS - archivos nativos (.java, .h, .m, etc.) - Publicar en github - http://cordova.apache.org/docs/en/5.0.0/guide_hybrid_plugins_index.md.html#Plugin%20Development%20Guide
  • 45. A programar un poco Paso 6: Optimizar el código - touch vs click (300ms) - Transiciones CSS vs cambios del DOM - Cache local: localStorage - Controlar falta de conexión: estado offline - Quitar JS y CSS no utilizados - Configuraciones
 http://cordova.apache.org/docs/en/5.0.0/guide_platforms_index.md.html#Platform%20Guides   - merges/<platform>: ajustes por plataforma
 https://cordova.apache.org/docs/en/4.0.0/guide_cli_index.md.html#The%20Command-Line%20Interface
  • 46. A programar un poco Paso 7: Depuración en dispositivo Chrome Remote Debugging: 1- Activar depuración USB en dispositivo (si no aparece, hacer ‘truquillo’) 2- Conectar dispositivo 3- Ir a chrome://inspect y marcar el check ‘Discover USB devices’ Más info: screencasting + other config: https://developer.chrome.com/devtools/docs/remote- debugging Safari Remote Debugging: 1- Activar ‘Web inspector’ en ‘Ajustes’ —> ‘Safari’ —> Avanzado 2- En Safari (Mac) acceder al dispositivo correspondiente en ‘Desarrollo’ (si no aparece, ir a ‘Preferencias’ —> ‘Avanzado’ —> ‘Mostrar el menú de desarrollo en la barra de menús’)
  • 52. A programar un poco One more thing… Cómo funciona Cordova en su parte nativa
  • 53. A programar un poco One more thing… Si queremos añadir Cordova a un proyecto existente y sólo en algunas partes del mismo: http://cordova.apache.org/docs/en/5.0.0/guide_platforms_android_webview.md.html