SlideShare una empresa de Scribd logo
www.interlat.co	
  –	
  info@interlat.co	
  -­‐	
  	
  h2p://www.facebook.com/interlat	
  -­‐	
  www.twi2er.com/interlat	
  -­‐	
  PBX:	
  57(1)	
  658	
  2959	
  	
  -­‐	
  Bogotá	
  -­‐	
  Colombia	
  
Aula	
  Virtual:	
  h2p://www.interlat.co/moodle/
Miércoles de Profundización en 	
  
e-business 	
  
Tema : Construyendo y publicando nuestra primera
App multiplataforma.	
  
Conferencista: Carlos Alonso Pérez	
  
País: España
Índice de la presentación
• Planeando nuestra aplicación
• Construcción
• Publicación
• Conclusiones
Planeando nuestra aplicación
• Objetivos
• Problemas
• Soluciones
• Viabilidad
• Decisión final
Objetivo: Triunfar
Objetivo: Triunfar
¿Qué hace falta para triunfar?
¿Qué hace falta para triunfar?
¿Qué hace falta para triunfar?
¿Qué hace falta para triunfar?
Y ...
Llegar a todos los públicos
Problema:
Problema: La fragmentación
Fragmentación: Sistemas Operativos.
Fragmentación: Tamaño de pantalla.
Fragmentación: Método de entrada.
Fragmentación: Hardware.
Fragmentación: Errores software.
Fragmentación: Conclusión
Equilibrio
Capacidades utilizadas
Clientes Potenciales
vs
Solución: Una única aplicación
Solución: Una única aplicación multiplataforma
Estudio de la solución: Tecnologías disponibles
HTML 5. Potencia y capacidades para tu browser
E"quetas	
  semán"cas
<header>
<nav> <section>
<article>
<figure>
<footer>
<menu>
Acceso	
  Hardware
Filesystem Sensores
Almacenamiento	
  local
Funcionamiento	
  offline
Comunicaciones	
  en	
  
"empo	
  real
NoQficaciones
WebSockets
Web	
  workers
Mul"media	
  y	
  Gráficos
canvas	
  2D	
  y	
  3D
gráficos	
  vectoriales	
  (SVG)
audio	
  y	
  vídeo
Javascript. El lenguaje de programación de la web.
prototype
eval
isFunction
typeof
instanceof
Object
new Function()
Object.isPrototypeOf()
Clases y objetos
CSS 3. Experiencia de usuario de última generación
Selectores
TipograZas	
  personalizadas
Efectos	
  en	
  textos	
  
Organización	
  en	
  columnasSemi	
  Transparencias
Colores	
  personalizados
Esquinas	
  redondeadas
Gradientes
Sombras
Animaciones
Transformaciones
jQuery Mobile. Desarrollo móvil rápido y sencillo
Javascript	
  no	
  intrusivo
Plugins
Máxima	
  compaQbilidad
Muy	
  ligero
Ampliamente	
  usado‘write	
  less,	
  do	
  more’
Documentación
Viabilidad técnica
SI
•	
  Geolocalización	
  (GPS)	
  
•	
  Reproducción	
  mulQmedia	
  
•	
  Sensores	
  de	
  movimiento	
  
•	
  Almacenar	
  datos	
  locales	
  
•	
  Acceso	
  offline
NO
•	
  Otros	
  sensores	
  
•	
  Cámara	
  
•	
  NoQficaciones	
  
•	
  Web	
  GL	
  	
  
•	
  Alto	
  rendimiento
h2p://mobilehtml5.org/
Decisión final
Construyendo nuestra aplicación multiplataforma
• Primeros pasos
• Componentes UI
• Capacidades HTML 5
• Diseño personalizado
• Demos
Primeros pasos. El documento
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>HTML 5 Demo</title>
<!-- CSS -->
<link rel="stylesheet"
href="http://code.jquery.com/mobile/1.0/jquery.mobile-1.0.min.css" />
<!-- jQuery Core -->
<script src="http://code.jquery.com/jquery-1.6.4.min.js"></script>
<!-- jQuery Mobile -->
<script type="text/javascript"
src="http://code.jquery.com/mobile/1.0/jquery.mobile-1.0.min.js">
</script>
</head>
<body>
</body>
</html>
Primeros pasos. El viewport
<head>
....
<meta name=”viewport”
content=”width=device-width, initial-scale=1”>
</head>
<!-- Sin Zoom -->
<meta .... user-scalable=no”>
Primeros pasos. Estructura de la aplicación
<body>
<div data-role="page">
<div data-role="header">
<h1>Header</h1>
</div>
<div data-role="content">
<p>Content</p>
</div>
<div data-role="footer"
data-position="fixed">
<h4>Footer</h4>
</div>
</div>
</body>
Componentes UI
Componentes UI.
Componentes UI
Componentes UI
Componentes UI. Menu y Toolbar
<div data-role="content">
<ul data-role="listview">
<li><a href="#geolocation">Geolocation API</a></li>
<li><a href="#canvas">Canvas</a></li>
<li><a href="#storage">Offline Storage</a></li>
</ul>
</div>
<div data-role="footer" data-position="fixed">
<div data-role="navbar">
<ul>
<li><a href="#main-menu">Home</a></li>
<li><a href="#geolocation">GPS</a></li>
<li><a href="#canvas">Canvas</a></li>
<li><a href="#storage">Storage</a></li>
</ul>
</div>
</div>
Capacidades HTML5. Geolocalización
<div data-role="page" id="geolocation" data-add-back-btn="true">
... Header ...
<div data-role="content">
<p>Wait for the map...</p>
</div>
... Footer ...
</div>
<script type="text/javascript">
$('#geolocation').live('pageinit', function(){
navigator.geolocation.getCurrentPosition (function(pos) {
var lat = pos.coords.latitude;
var lng = pos.coords.longitude;
... Lógica de invocación del mapa Google ...
</script>
Capacidades HTML5. Canvas
<div data-role="page" id="canvas" data-add-back-btn="true">
... Header ...
<div data-role="content">
<canvas id=”theCanvas”></canvas>
</div>
... Footer ...
</div>
var context = $('#theCanvas')[0].getContext('2d');
context.beginPath();
context.rect(20, 20, 200, 100);
context.fillStyle = context.createLinearGradient(20, 20, 220, 120);
context.fill();
Capacidades HTML5. Almacenamiento de datos
<div data-role="page" id="storage" data-add-back-btn="true">
... Header ...
<input type="text" id="item" placeholder="Add Item..." value=""/>
<input type="button" id="add_btn" value="Add Item" data-icon="plus"/>
<ol data-role="listview" data-inset="true"></ol>
... Footer ...
</div>
var $input = $('#item');
var arr = localStorage.items ? JSON.parse(localStorage.items) : [];
arr.push($input.val());
localStorage.items = JSON.stringify(arr);
... Lógica jQuery para refrescar la lista ...
Diseño personalizado.
• CSS
• jQuery Theme Roller
• Fireworks Theme editor
<head>
...
<link rel="stylesheet"
href="css/custom_css.min.css" />
...
</head>
Demos
Publicando nuestra aplicación multiplataforma
• Como aplicación nativa
• Como aplicación híbrida
• Como aplicación web
Como aplicación nativa
... ...
Como aplicación híbrida
... ...
Como aplicación web. Instalación
<head>
...
<link rel="apple-touch-icon" href="icons/icon57.png" sizes="57x57">

<link rel="apple-touch-icon" href="icons/icon114.png" sizes="114x114">

<link rel="apple-touch-icon" href="icons/icon72.png" sizes="72x72">

<link rel="apple-touch-icon" href="icons/icon80.png" sizes="80x80" >

<link rel="apple-touch-icon-precomposed" href="icons/icon57.png" sizes="android-only">
...
</head>
Como aplicación web. Funcionamiento offline
CACHE MANIFEST:
# version 1.0
# Archivos jQuery
http://code.jquery.com/jquery-1.6.1.min.js
http://code.jquery.com/mobile/1.0/jquery.mobile-1.0.min.css
http://code.jquery.com/mobile/1.0/jquery.mobile-1.0.min.js
...
# Archivos de la aplicación
icons/*
NETWORK:
# Archivos que no se deben cachear
<html manifest="offline.appcache">
...
</html>
Conclusión
Buena solución...
Conclusión
Buena solución...
... pero no definitiva.
www.interlat.co	
  –	
  info@interlat.co	
  -­‐	
  	
  h2p://www.facebook.com/interlat	
  -­‐	
  www.twi2er.com/interlat	
  -­‐	
  PBX:	
  57(1)	
  658	
  2959	
  	
  -­‐	
  Bogotá	
  -­‐	
  Colombia	
  
Aula	
  Virtual:	
  h2p://www.interlat.co/moodle/
Gracias!
Carlos Alonso Pérez	
  
Senior Developer - Unkasoft
info@mrcalonso.com
Twitter: @calonso
https://www.linkedin.com/in/mrcalonso

Más contenido relacionado

Destacado

Enumerados Server
Enumerados ServerEnumerados Server
Enumerados Server
Carlos Alonso Pérez
 
Ruby closures, how are they possible?
Ruby closures, how are they possible?Ruby closures, how are they possible?
Ruby closures, how are they possible?
Carlos Alonso Pérez
 
Aplicaciones móviles - HTML5
Aplicaciones móviles - HTML5Aplicaciones móviles - HTML5
Aplicaciones móviles - HTML5
Carlos Alonso Pérez
 
Scalable data modelling by example - Cassandra Summit '16
Scalable data modelling by example - Cassandra Summit '16Scalable data modelling by example - Cassandra Summit '16
Scalable data modelling by example - Cassandra Summit '16
Carlos Alonso Pérez
 
Cassandra for impatients
Cassandra for impatientsCassandra for impatients
Cassandra for impatients
Carlos Alonso Pérez
 
Javascript
JavascriptJavascript
iCloud
iCloudiCloud
Case Study: Troubleshooting Cassandra performance issues as a developer
Case Study: Troubleshooting Cassandra performance issues as a developerCase Study: Troubleshooting Cassandra performance issues as a developer
Case Study: Troubleshooting Cassandra performance issues as a developer
Carlos Alonso Pérez
 
Programacion web
Programacion webProgramacion web
Programacion web
Carlos Alonso Pérez
 
Cassandra Workshop - Cassandra from scratch in one day
Cassandra Workshop - Cassandra from scratch in one dayCassandra Workshop - Cassandra from scratch in one day
Cassandra Workshop - Cassandra from scratch in one day
Carlos Alonso Pérez
 
Sensors (Accelerometer, Magnetometer, Gyroscope, Proximity and Luminosity)
Sensors (Accelerometer, Magnetometer, Gyroscope, Proximity and Luminosity)Sensors (Accelerometer, Magnetometer, Gyroscope, Proximity and Luminosity)
Sensors (Accelerometer, Magnetometer, Gyroscope, Proximity and Luminosity)
Carlos Alonso Pérez
 

Destacado (11)

Enumerados Server
Enumerados ServerEnumerados Server
Enumerados Server
 
Ruby closures, how are they possible?
Ruby closures, how are they possible?Ruby closures, how are they possible?
Ruby closures, how are they possible?
 
Aplicaciones móviles - HTML5
Aplicaciones móviles - HTML5Aplicaciones móviles - HTML5
Aplicaciones móviles - HTML5
 
Scalable data modelling by example - Cassandra Summit '16
Scalable data modelling by example - Cassandra Summit '16Scalable data modelling by example - Cassandra Summit '16
Scalable data modelling by example - Cassandra Summit '16
 
Cassandra for impatients
Cassandra for impatientsCassandra for impatients
Cassandra for impatients
 
Javascript
JavascriptJavascript
Javascript
 
iCloud
iCloudiCloud
iCloud
 
Case Study: Troubleshooting Cassandra performance issues as a developer
Case Study: Troubleshooting Cassandra performance issues as a developerCase Study: Troubleshooting Cassandra performance issues as a developer
Case Study: Troubleshooting Cassandra performance issues as a developer
 
Programacion web
Programacion webProgramacion web
Programacion web
 
Cassandra Workshop - Cassandra from scratch in one day
Cassandra Workshop - Cassandra from scratch in one dayCassandra Workshop - Cassandra from scratch in one day
Cassandra Workshop - Cassandra from scratch in one day
 
Sensors (Accelerometer, Magnetometer, Gyroscope, Proximity and Luminosity)
Sensors (Accelerometer, Magnetometer, Gyroscope, Proximity and Luminosity)Sensors (Accelerometer, Magnetometer, Gyroscope, Proximity and Luminosity)
Sensors (Accelerometer, Magnetometer, Gyroscope, Proximity and Luminosity)
 

Similar a Construyendo y publicando nuestra primera app multiplataforma

APPS Aplicaciones móviles: Construyendo y publicando nuestro primera APPS mul...
APPS Aplicaciones móviles: Construyendo y publicando nuestro primera APPS mul...APPS Aplicaciones móviles: Construyendo y publicando nuestro primera APPS mul...
APPS Aplicaciones móviles: Construyendo y publicando nuestro primera APPS mul...
Interlat
 
Webinar interlat apps_2012_carlos_a-perez_españa
Webinar interlat apps_2012_carlos_a-perez_españaWebinar interlat apps_2012_carlos_a-perez_españa
Webinar interlat apps_2012_carlos_a-perez_españa
Community Managers Latam
 
JqueryMobile
JqueryMobile JqueryMobile
JqueryMobile
Barcelona GTUG
 
Phonegap
PhonegapPhonegap
Construyendo y publicando nuestra primera APP
Construyendo y publicando nuestra primera APPConstruyendo y publicando nuestra primera APP
Construyendo y publicando nuestra primera APP
Interlat
 
Introducción a Foundation 5
Introducción a Foundation 5Introducción a Foundation 5
Introducción a Foundation 5
Cycle-IT
 
Introducción a Foundation 5
Introducción a Foundation 5Introducción a Foundation 5
Introducción a Foundation 5
Cycle-IT
 
Primeros pasos Symfony PHPVigo
Primeros pasos Symfony PHPVigoPrimeros pasos Symfony PHPVigo
Primeros pasos Symfony PHPVigo
PHP Vigo
 
Desarrollo Metro con Windows 8 UPM
Desarrollo Metro con Windows 8 UPMDesarrollo Metro con Windows 8 UPM
Desarrollo Metro con Windows 8 UPM
Roberto Luis Bisbé
 
HTML5, CSS3 y móviles
HTML5, CSS3 y móvilesHTML5, CSS3 y móviles
HTML5, CSS3 y móviles
PideCurso
 
Frameworks y herramientas de desarrollo ágil para emprendedores y startups
Frameworks y herramientas de desarrollo ágil para emprendedores y startupsFrameworks y herramientas de desarrollo ágil para emprendedores y startups
Frameworks y herramientas de desarrollo ágil para emprendedores y startups
Mario Jose Villamizar Cano
 
Contenidoinformaticaenlaeducacion
ContenidoinformaticaenlaeducacionContenidoinformaticaenlaeducacion
Contenidoinformaticaenlaeducacion
Oscar Condori Vargas
 
Contenidoinformaticaenlaeducacion
ContenidoinformaticaenlaeducacionContenidoinformaticaenlaeducacion
Contenidoinformaticaenlaeducacion
Oscar Condori Vargas
 
Conferencia Gerencia de proyectos web e introd. Arq. de la información para l...
Conferencia Gerencia de proyectos web e introd. Arq. de la información para l...Conferencia Gerencia de proyectos web e introd. Arq. de la información para l...
Conferencia Gerencia de proyectos web e introd. Arq. de la información para l...
edwin.bernal
 
Diseño en la web
Diseño en la webDiseño en la web
Diseño en la web
Miguel Gea
 
Joomla Cms
Joomla CmsJoomla Cms
Innovaciones para Internet: La visión de Mozilla
Innovaciones para Internet: La visión de MozillaInnovaciones para Internet: La visión de Mozilla
Innovaciones para Internet: La visión de Mozilla
Juan Eladio Sánchez Rosas
 
En 20 minutos ... Responsive Design
En 20 minutos ... Responsive DesignEn 20 minutos ... Responsive Design
Presentaciones Mariano Carrizo - eCommerce IT Camp
Presentaciones Mariano Carrizo - eCommerce IT Camp Presentaciones Mariano Carrizo - eCommerce IT Camp
Presentaciones Mariano Carrizo - eCommerce IT Camp
eCommerce Institute
 
Presentación html5
Presentación html5Presentación html5
Presentación html5
Román Tienda Martinez
 

Similar a Construyendo y publicando nuestra primera app multiplataforma (20)

APPS Aplicaciones móviles: Construyendo y publicando nuestro primera APPS mul...
APPS Aplicaciones móviles: Construyendo y publicando nuestro primera APPS mul...APPS Aplicaciones móviles: Construyendo y publicando nuestro primera APPS mul...
APPS Aplicaciones móviles: Construyendo y publicando nuestro primera APPS mul...
 
Webinar interlat apps_2012_carlos_a-perez_españa
Webinar interlat apps_2012_carlos_a-perez_españaWebinar interlat apps_2012_carlos_a-perez_españa
Webinar interlat apps_2012_carlos_a-perez_españa
 
JqueryMobile
JqueryMobile JqueryMobile
JqueryMobile
 
Phonegap
PhonegapPhonegap
Phonegap
 
Construyendo y publicando nuestra primera APP
Construyendo y publicando nuestra primera APPConstruyendo y publicando nuestra primera APP
Construyendo y publicando nuestra primera APP
 
Introducción a Foundation 5
Introducción a Foundation 5Introducción a Foundation 5
Introducción a Foundation 5
 
Introducción a Foundation 5
Introducción a Foundation 5Introducción a Foundation 5
Introducción a Foundation 5
 
Primeros pasos Symfony PHPVigo
Primeros pasos Symfony PHPVigoPrimeros pasos Symfony PHPVigo
Primeros pasos Symfony PHPVigo
 
Desarrollo Metro con Windows 8 UPM
Desarrollo Metro con Windows 8 UPMDesarrollo Metro con Windows 8 UPM
Desarrollo Metro con Windows 8 UPM
 
HTML5, CSS3 y móviles
HTML5, CSS3 y móvilesHTML5, CSS3 y móviles
HTML5, CSS3 y móviles
 
Frameworks y herramientas de desarrollo ágil para emprendedores y startups
Frameworks y herramientas de desarrollo ágil para emprendedores y startupsFrameworks y herramientas de desarrollo ágil para emprendedores y startups
Frameworks y herramientas de desarrollo ágil para emprendedores y startups
 
Contenidoinformaticaenlaeducacion
ContenidoinformaticaenlaeducacionContenidoinformaticaenlaeducacion
Contenidoinformaticaenlaeducacion
 
Contenidoinformaticaenlaeducacion
ContenidoinformaticaenlaeducacionContenidoinformaticaenlaeducacion
Contenidoinformaticaenlaeducacion
 
Conferencia Gerencia de proyectos web e introd. Arq. de la información para l...
Conferencia Gerencia de proyectos web e introd. Arq. de la información para l...Conferencia Gerencia de proyectos web e introd. Arq. de la información para l...
Conferencia Gerencia de proyectos web e introd. Arq. de la información para l...
 
Diseño en la web
Diseño en la webDiseño en la web
Diseño en la web
 
Joomla Cms
Joomla CmsJoomla Cms
Joomla Cms
 
Innovaciones para Internet: La visión de Mozilla
Innovaciones para Internet: La visión de MozillaInnovaciones para Internet: La visión de Mozilla
Innovaciones para Internet: La visión de Mozilla
 
En 20 minutos ... Responsive Design
En 20 minutos ... Responsive DesignEn 20 minutos ... Responsive Design
En 20 minutos ... Responsive Design
 
Presentaciones Mariano Carrizo - eCommerce IT Camp
Presentaciones Mariano Carrizo - eCommerce IT Camp Presentaciones Mariano Carrizo - eCommerce IT Camp
Presentaciones Mariano Carrizo - eCommerce IT Camp
 
Presentación html5
Presentación html5Presentación html5
Presentación html5
 

Construyendo y publicando nuestra primera app multiplataforma

  • 1. www.interlat.co  –  info@interlat.co  -­‐    h2p://www.facebook.com/interlat  -­‐  www.twi2er.com/interlat  -­‐  PBX:  57(1)  658  2959    -­‐  Bogotá  -­‐  Colombia   Aula  Virtual:  h2p://www.interlat.co/moodle/ Miércoles de Profundización en   e-business   Tema : Construyendo y publicando nuestra primera App multiplataforma.   Conferencista: Carlos Alonso Pérez   País: España
  • 2. Índice de la presentación • Planeando nuestra aplicación • Construcción • Publicación • Conclusiones
  • 3. Planeando nuestra aplicación • Objetivos • Problemas • Soluciones • Viabilidad • Decisión final
  • 6. ¿Qué hace falta para triunfar?
  • 7. ¿Qué hace falta para triunfar?
  • 8. ¿Qué hace falta para triunfar?
  • 9. ¿Qué hace falta para triunfar? Y ...
  • 10. Llegar a todos los públicos
  • 19. Solución: Una única aplicación
  • 20. Solución: Una única aplicación multiplataforma
  • 21. Estudio de la solución: Tecnologías disponibles
  • 22. HTML 5. Potencia y capacidades para tu browser E"quetas  semán"cas <header> <nav> <section> <article> <figure> <footer> <menu> Acceso  Hardware Filesystem Sensores Almacenamiento  local Funcionamiento  offline Comunicaciones  en   "empo  real NoQficaciones WebSockets Web  workers Mul"media  y  Gráficos canvas  2D  y  3D gráficos  vectoriales  (SVG) audio  y  vídeo
  • 23. Javascript. El lenguaje de programación de la web. prototype eval isFunction typeof instanceof Object new Function() Object.isPrototypeOf() Clases y objetos
  • 24. CSS 3. Experiencia de usuario de última generación Selectores TipograZas  personalizadas Efectos  en  textos   Organización  en  columnasSemi  Transparencias Colores  personalizados Esquinas  redondeadas Gradientes Sombras Animaciones Transformaciones
  • 25. jQuery Mobile. Desarrollo móvil rápido y sencillo Javascript  no  intrusivo Plugins Máxima  compaQbilidad Muy  ligero Ampliamente  usado‘write  less,  do  more’ Documentación
  • 26. Viabilidad técnica SI •  Geolocalización  (GPS)   •  Reproducción  mulQmedia   •  Sensores  de  movimiento   •  Almacenar  datos  locales   •  Acceso  offline NO •  Otros  sensores   •  Cámara   •  NoQficaciones   •  Web  GL     •  Alto  rendimiento h2p://mobilehtml5.org/
  • 28. Construyendo nuestra aplicación multiplataforma • Primeros pasos • Componentes UI • Capacidades HTML 5 • Diseño personalizado • Demos
  • 29. Primeros pasos. El documento <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>HTML 5 Demo</title> <!-- CSS --> <link rel="stylesheet" href="http://code.jquery.com/mobile/1.0/jquery.mobile-1.0.min.css" /> <!-- jQuery Core --> <script src="http://code.jquery.com/jquery-1.6.4.min.js"></script> <!-- jQuery Mobile --> <script type="text/javascript" src="http://code.jquery.com/mobile/1.0/jquery.mobile-1.0.min.js"> </script> </head> <body> </body> </html>
  • 30. Primeros pasos. El viewport <head> .... <meta name=”viewport” content=”width=device-width, initial-scale=1”> </head> <!-- Sin Zoom --> <meta .... user-scalable=no”>
  • 31. Primeros pasos. Estructura de la aplicación <body> <div data-role="page"> <div data-role="header"> <h1>Header</h1> </div> <div data-role="content"> <p>Content</p> </div> <div data-role="footer" data-position="fixed"> <h4>Footer</h4> </div> </div> </body>
  • 36. Componentes UI. Menu y Toolbar <div data-role="content"> <ul data-role="listview"> <li><a href="#geolocation">Geolocation API</a></li> <li><a href="#canvas">Canvas</a></li> <li><a href="#storage">Offline Storage</a></li> </ul> </div> <div data-role="footer" data-position="fixed"> <div data-role="navbar"> <ul> <li><a href="#main-menu">Home</a></li> <li><a href="#geolocation">GPS</a></li> <li><a href="#canvas">Canvas</a></li> <li><a href="#storage">Storage</a></li> </ul> </div> </div>
  • 37. Capacidades HTML5. Geolocalización <div data-role="page" id="geolocation" data-add-back-btn="true"> ... Header ... <div data-role="content"> <p>Wait for the map...</p> </div> ... Footer ... </div> <script type="text/javascript"> $('#geolocation').live('pageinit', function(){ navigator.geolocation.getCurrentPosition (function(pos) { var lat = pos.coords.latitude; var lng = pos.coords.longitude; ... Lógica de invocación del mapa Google ... </script>
  • 38. Capacidades HTML5. Canvas <div data-role="page" id="canvas" data-add-back-btn="true"> ... Header ... <div data-role="content"> <canvas id=”theCanvas”></canvas> </div> ... Footer ... </div> var context = $('#theCanvas')[0].getContext('2d'); context.beginPath(); context.rect(20, 20, 200, 100); context.fillStyle = context.createLinearGradient(20, 20, 220, 120); context.fill();
  • 39. Capacidades HTML5. Almacenamiento de datos <div data-role="page" id="storage" data-add-back-btn="true"> ... Header ... <input type="text" id="item" placeholder="Add Item..." value=""/> <input type="button" id="add_btn" value="Add Item" data-icon="plus"/> <ol data-role="listview" data-inset="true"></ol> ... Footer ... </div> var $input = $('#item'); var arr = localStorage.items ? JSON.parse(localStorage.items) : []; arr.push($input.val()); localStorage.items = JSON.stringify(arr); ... Lógica jQuery para refrescar la lista ...
  • 40. Diseño personalizado. • CSS • jQuery Theme Roller • Fireworks Theme editor <head> ... <link rel="stylesheet" href="css/custom_css.min.css" /> ... </head>
  • 41. Demos
  • 42. Publicando nuestra aplicación multiplataforma • Como aplicación nativa • Como aplicación híbrida • Como aplicación web
  • 45. Como aplicación web. Instalación <head> ... <link rel="apple-touch-icon" href="icons/icon57.png" sizes="57x57">
 <link rel="apple-touch-icon" href="icons/icon114.png" sizes="114x114">
 <link rel="apple-touch-icon" href="icons/icon72.png" sizes="72x72">
 <link rel="apple-touch-icon" href="icons/icon80.png" sizes="80x80" >
 <link rel="apple-touch-icon-precomposed" href="icons/icon57.png" sizes="android-only"> ... </head>
  • 46. Como aplicación web. Funcionamiento offline CACHE MANIFEST: # version 1.0 # Archivos jQuery http://code.jquery.com/jquery-1.6.1.min.js http://code.jquery.com/mobile/1.0/jquery.mobile-1.0.min.css http://code.jquery.com/mobile/1.0/jquery.mobile-1.0.min.js ... # Archivos de la aplicación icons/* NETWORK: # Archivos que no se deben cachear <html manifest="offline.appcache"> ... </html>
  • 49. www.interlat.co  –  info@interlat.co  -­‐    h2p://www.facebook.com/interlat  -­‐  www.twi2er.com/interlat  -­‐  PBX:  57(1)  658  2959    -­‐  Bogotá  -­‐  Colombia   Aula  Virtual:  h2p://www.interlat.co/moodle/ Gracias! Carlos Alonso Pérez   Senior Developer - Unkasoft info@mrcalonso.com Twitter: @calonso https://www.linkedin.com/in/mrcalonso