Introducción. HTML5 para móviles

Anuncio
Texto
Tema 6
Desarrollo de
aplicaciones web
para móviles
Texto
Parte I: Introducción. HTML
y CSS para webs móviles
1
1
¿Qué tienen de
especial los
dispositivos
móviles...
...con respecto a los
equipos “de escritorio”?
Desarrollo de
aplicaciones web para
móviles
2
Dispositivos móviles
Mercado muy heterogéneo
Móviles “convencionales” (gama baja-media-alta)
Smartphones: iPhone, Android, algunos Nokia
Otros dispositivos: tablets, ebooks
Nos vamos a centrar en smartphones, por
cuestiones de tiempo y espacio
Sobre todo Android e iOS, aunque también
haya Windows Phone
Esto no quiere decir que los demás dispositivos
no sean importantes en el mundo real
HTML y CSS para webs móviles
3
La pantalla
Lo más inmediato, la pantalla
La resolución varía de 240x320 (gama baja)
a 1080x1920 (Samsung Galaxy S4), siendo
la media de 320x480 (HVGA o Half-VGA) o
más
Además hay que tener en cuenta los DPI
Aunque la resolución sea alta no podemos
colocar demasiada información ya que la
pantalla es físicamente muy pequeña
Y más alta que ancha, al contrario que en
el escritorio.
Es incómodo hacer scroll horizontal, por lo que
la información tiende a colocarse en una
columna
HTML y CSS para webs móviles
4
La pantalla
http://developer.android.com/about/dashboards/index.html
HTML y CSS para webs móviles
5
Dispositivos de entrada
Introducir datos en un móvil es
incómodo y tedioso. La aplicación debe reducir esta necesidad al
mínimo imprescindible
Hay que tener en cuenta las
características del dispositivo de entrada
Los controles táctiles tienen que ser grandes,
para poder ser pulsados con el dedo. No así si
se usa un stylus
HTML y CSS para webs móviles
6
Otros elementos
Capacidad de procesamiento
Ciertos APIs no tienen todavía suficiente
rendimiento para los móviles (WebGL,
canvas,...)
Batería
Javascript gasta batería, motivo por el que la
mayoría de navegadores móviles paran su
ejecución en las pestañas en segundo plano
También ciertos APIs gastan mucha batería
por el hardware que usan “por debajo” (ej.
geolocalización)
HTML y CSS para webs móviles
7
Recomendaciones para la interfaz de usuario
Apple Human Interface Guidelines for Web
Applications
Android Guidelines for Web Apps
http://developer.android.com/guide/
webapps/index.html
Recomendaciones del W3C para la web
móvil
Versión resumida en castellano en http://
www.w3c.es/Divulgacion/Tarjetas/MWBP/
Windows Phone design library (no es para
apps. web, pero da una idea del estilo)
http://dev.windowsphone.com/en-us/design/
library
HTML y CSS para webs móviles
8
2
Plataformas de
programación de
aplicaciones para
móviles
Aplicaciones nativas vs.
web vs. “híbridas”
Desarrollo de
aplicaciones web móviles
9
Programar aplicaciones para móviles
HTML y CSS para webs móviles
Opción 1: Aplicaciones “nativas”
Aplicaciones del SO del móvil. Por ejemplo
Android: desarrollo en Java, con APIs propios del sistema
iOS: Objective-C, librerías Cocoa Touch
Windows Phone: .NET (p.ej. C#/XAML)
Runtimes: capas por encima del SO, permiten una mayor portabilidad
JavaME: el runtime más difundido del mundo...pero con futuro nulo. Carente de
soporte táctil estándar y de actualizaciones
Opción 2: Aplicaciones web
Sitios web convencionales usando Javascript+HTML+CSS.
Hay una serie de “trucos” para que parezcan apps. nativas
Pueden funcionar offline (gracias a la cache de HTML5)
Pueden ir a pantalla completa, sin la barra de direcciones
Pueden tener un icono en el escritorio
10
Ventajas aplicaciones web
HTML y CSS para webs móviles
No es necesario aprender APIs propios del dispositivo, ni
nuevos lenguajes de programación
La aplicación es fácil de distribuir y actualizar a la nueva
versión
La instalación solo requiere una visita al sitio web. La actualización es
automática usando cache de HTML5
No hay barreras artificiales a la distribución (ej. App Store de Apple)
Es portable entre todos los dispositivos independiendemente
del SO
11
Problemas aplicaciones web
HTML y CSS para webs móviles
Por cuestiones de rendimiento, no son apropiadas para
algunos tipos de aplicaciones (juegos con gráficos intensivos,
multimedia, …)
Es difícil darle a la interfaz el “look” propio de la plataforma
Aunque hay frameworks que solventan en parte el problema
No son accesibles todas las capacidades del dispositivo
Algunos APIs todavía no están estandarizados (radio FM), o bien no
están implementados en móviles (por ejemplo el Media Capture API que
vimos en escritorio)
Es más complicado obtener un provecho económico
Las aplicaciones web no se pueden distribuir directamente en la App
Store o en el Android Market, por ejemplo.
12
Aplicaciones “híbridas”
HTML y CSS para webs móviles
Últimamente han surgido herramientas que permiten
desarrollar aplicaciones web con ciertas ventajas de las
nativas
Por ejemplo acceso a ciertos APIs con Javascript: sonido, vibración,
acelerómetro, …
El “truco” consiste en que se genera una aplicación nativa pero que es
una ventana del navegador
Ejemplo: http://www.phonegap.com
13
Frameworks para móviles
HTML y CSS para webs móviles
Estilos CSS + librerías Javascript que implementan:
Widgets adaptados a móviles (algunos incluso imitando el “look&feel”
de alguna plataforma)
Navegación entre “pantallas”
Eventos de tipo táctil (swipe, tap, ...)
jQuery Mobile
jquerymobile.com
jQT
jqtjs.com
lungojs
lungo.tapquo.com
14
Otras ayudas
HTML y CSS para webs móviles
Librerías Javascript adaptadas a móviles
zepto.js es una librería con un API compatible con el de jQuery pero
mucho más ligera
Plantillas HTML+CSS
mobile boilerplate incluye estilos por defecto (CSS reset), scripts de
ayuda (eliminar barra de navegación, ...), librerías útiles (zepto.js) y un
esqueleto HTML5 básico adaptado a móviles
15
El “caso Facebook”
HTML y CSS para webs móviles
Facebook “apostó” por aplicaciones móviles basadas en
HTML5...
Pero el rendimiento no fue el esperado...y tuvieron que pasarse a
apps nativas (http://es.engadget.com/2012/09/11/facebook-aplicacionhtml5-error/)
No obstante, los desarrolladores de Sencha Touch (un framework
javascript) consiguieron implementar una versión HTML5 mucho más
eficiente que la original (http://www.sencha.com/blog/the-making-offastbook-an-html5-love-story)
16
3
Navegadores en
dispositivos
móviles
Desarrollo de
aplicaciones web móviles
17
Navegadores “del sistema”
iOS: Safari on iOS (antes Mobile Safari)
Durante mucho tiempo fue el navegador móvil
más avanzado en términos de compatibilidad
con HTML5
Introdujo muchas características no
estándares luego copiadas por otros
navegadores móviles
Android
“navegador por defecto”
Chrome para Android, muy similar al de
escritorio, mucho mejor soporte de HTML5
HTML y CSS para webs móviles
18
Otros navegadores
HTML y CSS para webs móviles
Explorer (IE10 en WP8, IE9 en WP7.5) Opera Mobile, Firefox,
Dolphin, Amazon Silk (Kindle Fire)...
Recursos para comprobar la compatibilidad
caniuse.com
mobilehtml5.org
Tests de compatibilidad
RingMark: www.rng.io, énfasis en móviles
acid3.acidtests.org
html5test.com
19
4
HTML5 para
móviles
Desarrollo de
aplicaciones web móviles
20
Estándares de marcado en móviles
HTML y CSS para webs móviles
Existen diferentes variantes de HTML y CSS apropiadas para móviles
XHTML Basic (subconjunto de XHTML) y CSS MP (del W3C)
XHTML MP (Mobile Profile, ampliación de XHTML Basic) y WAP CSS (de la
OMA-Open Mobile Alliance)
Nosotros usaremos aquí HTML5
https://en.wikipedia.org/wiki/XHTML_Mobile_Profile
21
El viewport
HTML y CSS para webs móviles
22
Aunque la resolución real de la pantalla sea
baja, el dispositivo va a “simular” que tiene
una distinta
Por ejemplo el iPhone original tiene 320px de
ancho, pero “simula” que tiene 980px
Esto se hace para que las webs no diseñadas
para móviles aparezcan como en el escritorio (y
no “cortadas” en vertical)
Terminología:
Initial viewport o device viewport: la resolución
real
Current viewport o layout viewport: el “imaginario”
o “simulado” (pero en cierto modo el real desde el
punto de vista p.ej. de medidas en CSS)
http://developer.apple.com/library/ios/#documentation/
AppleApplications/Reference/SafariWebContent/
UsingtheViewport/UsingtheViewport.html
Controlar el viewport
HTML y CSS para webs móviles
Etiqueta <meta> en la cabecera
<meta name=”viewport” content=”{propiedades}”>
!
!
!
<!-- ‘user-scalable=no’ significa que no se puede hacer zoom. Esto
es raro en la web, pero habitual en una app nativa -->
<meta name="viewport" content="width=320,user-scalable=no">
!
<!-- teóricamente ‘device-width’ es la resolución horizontal del dispositivo -->
<meta name=”viewport” content=”width=device-width”>
!
En realidad, muchos dispositivos con resolución mayor de 320px
aún así dan 320 como device-width
Esto se hace para simplificar la vida del desarrollador, y que solo tenga
en cuenta un tamaño de pantalla
23
Formularios en HTML5
HTML y CSS para webs móviles
Recordar que en HTML5 se pueden usar
type="email", type="number", type="url",
type="tel", type=”range”, type=”date”,.... Se mostrará un teclado virtual adaptado
En campos tipo fecha, se usará el selector de
fechas “nativo”
Teclado virtual para type=”url” en iOS
Atributo placeholder para poner un texto
de ejemplo dentro del campo
Útil aquí por ahorrar espacio
<input type="text" name="login" placeholder="usuario..."> <br>
<input type="text" name="password" placeholder="contraseña...">
Selector de fechas en iOS
24
Validación HTML5
HTML y CSS para webs móviles
Aunque las versiones modernas de Android e iOS
admiten atributos como required, min, max,... en general
estos no impedirán automáticamente el envío del
formulario
!<form
action="prueba.php">
<!-- aunque no rellenemos este campo, se enviará el formulario igualmente -->
! <input type="text" id="nombre" required><br>
<input type="submit">
!</form>
No obstante, hay métodos javascript que nos facilitan la validación
(HTML5 constraint validation API)
<form action="prueba.php" onsubmit=”return this.checkValidity()”>
...
</form>
if (document.getElementById("nombre").validity.valueMissing)
alert("Valor requerido!!")
25
Subir archivos
HTML y CSS para webs móviles
Como sabemos, para subir un archivo al servidor hay que usar
un <input type=”file”>
Hasta iOS 6/Android 2.2 este tipo de campo no funcionaba
En iOS sigue siendo imposible subir algo que no sea audio/video
Se puede especificar el tipo MIME aceptable con accept
!
!
<input type="file" accept="application/pdf">
<input type="file" accept="image/jpeg">
<!-- cualquier tipo de imagen -->
<input type="file" accept="image/*">
<!-- cualquier tipo de video -->
<input type="file" accept="video/*">
HTML Media Capture: el atributo capture especifica que
queremos tomar los datos de cámara/micrófono
!
<input type="file" accept="image/*" capture>
<input type="file" accept="video/*" capture>
<input type="file" accept="audio/*" capture>
!
iOS ignora este atributo pero “a cambio” cuando se usa accept da la
opción de usar cámara/micro además de subir un archivo
26
Formularios: usabilidad
HTML y CSS para webs móviles
Usar <label>
Evitamos que p.ej. haya que tocar directamente sobre un
checkbox para seleccionarlo
!
!
<input type="checkbox" name="ok" id="aceptar" >
<br>
<label for="aceptar"> Acepto las condiciones de
uso y términos del servicio </label>
!
Se recomienda poner el <label> encima/debajo del campo (para
mantener diseño en 1 columna)
En campos de texto, en lugar de <label>, usar atributo
placeholder
¿Es necesario el type=”password”?
27
“Trucos” para que la app parezca algo más nativa
HTML y CSS para webs móviles
Icono en el escritorio
!
!
<!-- solo iOS, el sistema le añade ciertos efectos visuales (brillo, ...)-->
<link rel="apple-touch-icon" href="icono.png" />
<!-- iOS y Android -->
<link rel="apple-touch-icon-precomposed" href="icono.png" />
!
Problema: el usuario debe añadir manualmente el “favorito” (p.ej
en Android: tecla menú > Más > Añadir acceso directo)
Eliminar barra de URL
Truco: hacer scroll a y=1 pixel para forzar que la barra se oculte
(window.scrollTo(0,1) en javascript al cargar la página)
En iOS hay etiquetas meta para esto y para controlar el aspecto
de la barra de status (donde se muestra hora, batería, señal, ...)
28
5
CSS para
móviles
Desarrollo de
aplicaciones web móviles
29
CSS media queries
HTML y CSS para webs móviles
Parte del estándar CSS3, nos permite aplicar un CSS si
se cumplen ciertas condiciones
<!-- vincular con una u otra hoja de estilo dependiendo de la resolución horizontal -->
<link type="text/css" rel="stylesheet" media="screen and (max-device-width:480px)"
href="smartphone.css" />
<link type="text/css" rel="stylesheet" media="screen and (min-device-width:481px)"
href="desktop.css" />
!
<!-- también se puede poner en el CSS “empotrado” en el HTML -->
<style>
@media screen and (max-device-width:480px) {
body {
background-color: red;
}
}
</style>
30
Sintaxis de media queries
HTML y CSS para webs móviles
Expresiones:
min- (>=). p.ej. min-device-width:640px
max- (<=). p.ej. max-device-width:640px
: (==). p.ej. device-width:640px
Operadores: not, and, or, only (only screen serían
dispositivos que solo soportan media=”screen”, típicamente
móviles)
Algunas características comprobables
device-width, device-height: medidas del dispositivo
width, height: medidas del viewport
orientation (puede ser landscape o portrait)
resolution (típicamente en dpi)
aspect-ratio, device-aspect-ratio
31
“Retina” Web
HTML y CSS para webs móviles
“Tipos” de pixels:
Device pixels: los del hardware
CSS pixels: los que se usan en las reglas CSS
Como hemos visto, un dispositivo puede reportar que
tiene 320 px de ancho (CSS pixels) cuando en realidad
podría tener 640
window.devicePixelRatio: ¿Cuántos píxeles reales
es 1 pixel CSS?
Podemos usar esta información para servir imágenes de
“alta resolución” vs. “resolución estándar”
32
“Retina” Web
HTML y CSS para webs móviles
Usamos una imagen u otra dependiendo del “device pixel
ratio”, pero ambas escaladas al mismo tamaño en píxeles
CSS
http://www.smashingmagazine.com/2012/08/20/towards-retinaweb/
.icon {
background-image: url(example.png);
background-size: 200px 300px;
height: 300px;
width: 200px;
}
!
@media only screen and (-Webkit-min-device-pixel-ratio: 1.5),
only screen and (-moz-min-device-pixel-ratio: 1.5),
only screen and (-o-min-device-pixel-ratio: 3/2),
only screen and (min-device-pixel-ratio: 1.5) {
.icon {
background-image: url([email protected]);
}
}
33
Referencias
Los “fabricantes” suelen tener sitios web para
desarrolladores con documentación, ejemplos,
simuladores, etc.
En general developer.xxx.com, por ejemplo http://
developer.nokia.com , http://developer.samsung.com http://
developer.android.com
http://proquestcombo.safaribooksonline.com/ (solo desde la UA)
!
Programming the mobile web, 2nd ed, O’Reilly 2013
!
!
Build Mobile Websites and Apps for Smart Devices, Ed. SitePoint, 2011
!
Building iPhone Apps with HTML, CSS and Javascript y Building
Android Apps with HTML, CSS and Javascript
HTML y CSS para webs móviles
34
Descargar