38
De web a web, mobile web. Asier Marqués @asiermarques

Desarrollo de Mobile Web Apps

Embed Size (px)

DESCRIPTION

Charla para el evento Sevilla Mobility Day. Desde hace pocos años, desarrollar sitios y aplicaciones web aplicando diseños responsive ha dejado de ser opcional. Para dispositivos móviles, empieza a ser necesario ir más allá y crear experiencias de usuario dedicadas a estos entornos.

Citation preview

Page 1: Desarrollo de Mobile Web Apps

De web a web, mobile web.

Asier Marqués @asiermarques

Page 2: Desarrollo de Mobile Web Apps

“El contenido es el rey”

Page 3: Desarrollo de Mobile Web Apps

¿Responsive vs Mobile Web?

• El contenido es el rey pero la UX también debe serlo.

• El tamaño importa

• El responsive en dispositivos móviles puede “no escalar”

Page 4: Desarrollo de Mobile Web Apps

airbnb

Page 5: Desarrollo de Mobile Web Apps

facebook

Page 6: Desarrollo de Mobile Web Apps

Badoo

Page 7: Desarrollo de Mobile Web Apps

Cloudsound

Page 8: Desarrollo de Mobile Web Apps

¿Web Mobile VS Nativo/Híbrido?

PROS

• Estamos libres de las políticas de App Stores

• Actualizar la aplicación no es un infierno

• El soporte es directo

• Podemos medir mejor

Page 9: Desarrollo de Mobile Web Apps

¿Web Mobile VS Nativo/Híbrido?

CONTRAS

• No estamos en el canal de aplicaciones

• Nos perdemos ciertos beneficios de integración con el hardware

• No podemos aprovechar el hardware del dispositivo para crear aplicaciones complejas

Page 10: Desarrollo de Mobile Web Apps

¿Será opcional crear una web app mobile en el 2015?

Page 11: Desarrollo de Mobile Web Apps

Cómo hacerlo• SPA, single page application vs MVC tradicional

• Respetando convenciones de diseño de cada plataforma vs Diseño propio

Page 12: Desarrollo de Mobile Web Apps

Frameworks• ionic framework

• onsen ui

• chocolat chip ui

• app.js

• mobile angular ui

Page 13: Desarrollo de Mobile Web Apps

Hacernos nuestro framework

• HTML 5 + “cosas” de cada plataforma

• CSS 3, transiciones y animaciones!important

• Javascript (¿jQuery/Zepto?)

• Angular

• Media (Imágenes+Video+Audio) y assets

• Caché

Page 14: Desarrollo de Mobile Web Apps

Touch events• 300ms delay

• Eventos

• touch: touchstart, touchend, touchmove

• touch-action

Page 15: Desarrollo de Mobile Web Apps

Touch events• Hammer.js + ngHammer

• touchejs

Page 16: Desarrollo de Mobile Web Apps

Notificaciones• Safari Push Notifications

• HTML5 notification

Page 17: Desarrollo de Mobile Web Apps

CSS3 Transitions, ¿por qué?• En una app mobile, las animaciones y transiciones

son parte de la UI y esenciales en la UX

• Deben tener un sentido, en cada plataforma (si seguimos las convenciones)

• No se trata de poner gatitos que saluden o copos de nieve (al menos en verano)

Page 18: Desarrollo de Mobile Web Apps

“Links don’t open apps.” Jason Grigsby

Page 19: Desarrollo de Mobile Web Apps

Las APPs nativas no son el enemigo

• Esquema de url personalizados: nombre_app://

• Debemos asegurarnos de que la app esté instalada

• Ideal para lanzar apps conocidas como WhatsApp o similares

• Smart Banners

Page 20: Desarrollo de Mobile Web Apps

Detectar si una app puede estar instalada en el móvil

• Cookies al registrarse en el servicio o redirigir a la app store

• Smart Banners

Page 21: Desarrollo de Mobile Web Apps

Smart Banners<meta name="apple-itunes-app" content=“app-id=myAppStoreID"/>

Afiliados

<meta name="apple-itunes-app" content="app-id=myAppStoreID, affiliate-data=myAffiliateData”/>

Pasar datos a la app

<meta name="apple-itunes-app" content="app-id=myAppStoreID, app-argument=myURL"/>

Page 22: Desarrollo de Mobile Web Apps

Para AndroidjQuery Smart Banners

http://jasny.github.io/jquery.smartbanner/

Page 23: Desarrollo de Mobile Web Apps

Media• YUI Compressor

• Retina, CSS

• Porcentaje de calidad en imágenes

• Minimizado

Page 24: Desarrollo de Mobile Web Apps

Retina

• En pantalla retina tenemos el doble de densidad para mostrar elementos gráficos

• Debemos preparar imágenes alternativas para estas pantallas

• Evitar el uso de imágenes para los iconos, utilizando WebFonts en su lugar

Page 25: Desarrollo de Mobile Web Apps

Retina CSS

@media (-webkit-min-device-pixel-ratio: 2),

(min-resolution: 192dpi) {

}

Page 26: Desarrollo de Mobile Web Apps

Retina CSS -webkit

background-image: webkit-image-set(

url(icon.png) 1x,

url([email protected]) 2x

);

Page 27: Desarrollo de Mobile Web Apps

Retina JSif (window.devicePixelRatio > 1) {

var images = $('img');

images.each(function(i) {

var lowres = $(this).attr('src');

var highres = $(this).attr(‘data-src-retina‘);

$(this).attr('src', highres);

});

}

Page 28: Desarrollo de Mobile Web Apps

Cache• Manifest

• Proxy Caché HTTP, varnish

• LocalStorage

Page 29: Desarrollo de Mobile Web Apps

Angular, rendimiento• {{ ::value }}

• $scope.$digest en lugar de $scope.$apply

• cuidado con ng-repeat y directivas tipo ng-hide, ng-show, puede ser interesante considerar gestionarlos fuera de angular

• Los filtros dentro de los ng-repeat pueden cargar también la app.

Page 30: Desarrollo de Mobile Web Apps

Fuentes y rendimientoUtilizar siempre .woff

Cuidado con cargar directamente las web fonts de Google o similares.

• Opción 1: cargar las fuentes de forma asíncrona

• Opción 2: generar nuestro css para nuestras fuentes en woff y cargarlas en local storage

http://bdadam.com/blog/loading-webfonts-with-high-performance.html

Page 31: Desarrollo de Mobile Web Apps

Fuentes y rendimientoOpción 1

<style>

@font-face {

font-family: 'Whatever Sans';

src: local('Whatever Sans'),

url(http://fonts.gstatic.com/s/.../ODelI1aHBYDBqgeIA...Oz0jw624.woff)

format('woff');

}

</style>

Page 32: Desarrollo de Mobile Web Apps

Fuentes y rendimientoOpción 2

if (localStorage.whateverSans) {

//añadimos el contenido css al DOM

} else {

var request = new XMLHttpRequest();

request.open('GET', '/path/to/whatever-sans.woff.css', true);

request.onload = function() {

if (request.status >= 200 && request.status < 400) {

localStorage.sourceSansPro = request.responseText;

//añadimos el contenido css al DOM

}

request.send

}

Page 33: Desarrollo de Mobile Web Apps

Mapas• Leaflet

• Angular Google Maps

• MarkerCluster o Leaflet.markercluster para obtener mejor rendimiento

• Cuidado con los tiles si usamos visualizaciones procesadas por nosotros!

Page 34: Desarrollo de Mobile Web Apps

Mapas, rendimiento

Page 35: Desarrollo de Mobile Web Apps

Monitorización, gestión de errores

• caliper.io

• bugsnag.com

• rescue.js

Page 36: Desarrollo de Mobile Web Apps

Tests A/B• easyab -> http://romainstrock.com/easyAB/

• Abba -> https://github.com/maccman/abba

• vwo.com

Page 37: Desarrollo de Mobile Web Apps

UI, Convenciones, Diseñohttp://www.mobile-patterns.com/

http://www.lovelyui.com/

http://www.pttrns.com/

http://ui.theultralinx.com/

http://inspired-ui.com/

http://inspirationmobile.tumblr.com/

http://www.android-app-patterns.com/

Page 38: Desarrollo de Mobile Web Apps

GraciasAsier Marqués [email protected] @asiermarques linkedin/in/asier