SlideShare una empresa de Scribd logo
1 de 110
Descargar para leer sin conexión
PROGRESSIVEWEBAPPS
Nicolás Bello Camilletti
@nbellocam
SOUTHWORKS
PROGRESSIVEWEBAPP
Es un conjunto de
conceptos/herramientas/etc.
WEBCOMONATIVO
No es un concepto nuevo
native web
native web
WEBAPPSENWINDOWS
Pinned Sites
Windows 7
WEBAPPSENWINDOWS
Pinned Sites
Windows 7
Packaged WA
Windows 8
WEBAPPSENWINDOWS
Pinned Sites
Windows 7
Packaged WA
Windows 8
Hosted Web Apps
Windows 10
WEBAPPSENWINDOWS
Pinned Sites
Windows 7
Packaged WA
Windows 8
PWA
Windows 10
Hosted Web Apps
Windows 10
PROGRESSIVEWEBAPP
a.k.a. “PWA”
PWA&ANDROID
Lyft
ride.lyft.com
Lyft
ride.lyft.com
BENEFICIOSDEWEBAPPS
WEBAPPSANDAN
ENCUALQUIERLUGAR!
ONECODEBASE
TORULETHEMALL…
PWAS=MENORCOSTO(&TIEMPO)
App core
iPhone iPad Publicar en App Store
Android
Phone
Android
Tablet Publicar en Play Store
Windows Publicar en Windows Store
MacOS Publicar en Mac App Store
Web Host
Nativa
Es requerido publicar en los App store
PWAS=MENORCOSTO(&TIEMPO)
PWA
Publicar en los App store es opcional (o por única vez)
Host
Gratis
App core
iPhone iPad
Android
Phone
Android
Tablet
Windows
MacOS
Web
Other PWA-capable
PRINCIPIOSDEPWA
PWASSONSIMPLEMENTEWEBAPPS…
PWASSONSIMPLEMENTEWEBAPPS…
¡QUEPROVEENDEUNAEXCELENTE
EXPERIENCIADEUSUARIO!
PWAES
PWAES
Progressive
PROGRESSIVEWEBAPP
PROGRESSIVEENHANCEMENT
¿QUÉESPROGRESSIVEENHANCEMENT?
Mono
¿QUÉESPROGRESSIVEENHANCEMENT?
Stereo
¿QUÉESPROGRESSIVEENHANCEMENT?
Surround Sound
¿QUÉESPROGRESSIVEENHANCEMENT?
5.1 Channel
Surround Sound
¿QUÉESPROGRESSIVEENHANCEMENT?
7.1 Channel
Surround Sound
¿QUÉESPROGRESSIVEENHANCEMENT?
16.2 Channel Surround Sound
¿QUÉESPROGRESSIVEENHANCEMENT?
A veces, mono es
la única opción
¿QUÉESPROGRESSIVEENHANCEMENT?
Objectivo &
tareas principales
¿QUÉESPROGRESSIVEENHANCEMENT?
Capacidades
Experiencia
PESEASEGURADEQUELOS
USUARIOSPUEDANUSARTU
PRODUCTOSINIMPORTAREL
CONTEXTO.
PROGRESSIVEENHANCEMENTWEB
PROGRESSIVEENHANCEMENTWEB
type="email"
Deltas	de	experiencia
1. ¿Soporta input para email?
2. ¿Algoritmo de	validación
implementado?
3. ¿Teclado virtual?
PROGRESSIVEENHANCEMENTWEB
required
Deltas	de	experiencia
1. ¿Soporta validación HTML?
PROGRESSIVEENHANCEMENTWEB
aria-required="true"
Deltas	de	experiencia
1. ¿El navegador expone la propiedad aria-required ?
2. ¿Tiene implementado la asistencia para aria-required?
required validation
email validation
dedicated keyboard
Capabilities
Experience
text input required notification
PROGRESSIVEENHANCEMENTWEB
PESEASEGURADEQUELOS
USUARIOSPUEDANUSARTU
PRODUCTOSINIMPORTAREL
CONTEXTO.
PWAES
Progressive Responsive
PWAES
Network
Independent
Progressive Responsive
PWAES
Network
Independent
Progressive Responsive App-Like
PWAOAPPNATIVA?
PWAES
Network
Independent
Progressive Responsive App-Like Fresh
PWAES
Network
Independent
Segura
Progressive Responsive App-Like Fresh
PWAES
Discoverable
Network
Independent
Segura
Progressive Responsive App-Like Fresh
PWAES
Discoverable
Network
Independent
Segura Re-engageable
Progressive Responsive App-Like Fresh
PWAES
Discoverable Instalable
Network
Independent
Segura Re-engageable
Progressive Responsive App-Like Fresh
LAAPPVAASEGUIRANDANDOENEL
BROWSER.SÓLOPODRÍAHACERMÁS
COSASCUANDOSE“INSTALE”.
WHATWEBCANDO.TODAY
PWAES
Discoverable Instalable Linkeable
Network
Independent
Segura Re-engageable
Progressive Responsive App-Like Fresh
PERO…¿COMOLOLOGRAMOS?
PERO…¿COMOLOLOGRAMOS?
{
"lang": "en",
"short_name": "My App",
"name": "My Totally Awesome App",
"icons": [
{
"src": "img/launcher-icon-2x.png",
"sizes": "96x96",
"type": "image/png"
}, {
"src": "img/launcher-icon-4x.png",
"sizes": "192x192",
"type": "image/png"
}
],
"start_url": "/pwa/?utm_source=homescreen",
"display": "standalone",
"orientation": "portrait",
"background_color": "black"
}
WEBAPP
MANIFEST
Meta Tags 2.0
SERVICE
WORKER
Actua como servidor proxy
entre la web app, el browser
y la conexión (cuando está
disponible)
Solo HTTPS
No tiene acceso al DOM
Solo request asyncronicos
Ejecuta separado del sitio
Un service worker por alcance
SERVICE WORKERS
PROPIEDADES
PERO…¿PUEDOUSARLO?
PERO…¿PUEDOUSARLO?
1. if ('serviceWorker' in navigator) {
2. navigator.serviceWorker.register('/service-worker.js')
3. .then(registration => {
4. console.log('Registered:', registration);
5. })
6. .catch(error => {
7. console.log('Registration failed: ', error);
8. });
9. }
index.html
CICLODEVIDA
CICLODEVIDA
1. self.addEventListener('install', event => {
2. event.waitUntil(
3. caches.open('static-v1').then(cache => {
4. return cache.addAll([
5. '/',
6. '/index.html',
7. '/styles.css',
8. '/main.js',
9. '/fallback.html'
10. ]);
11. })
12. );
13. }
sw.js
CICLODEVIDA
CICLODEVIDA
1. self.addEventListener('activate', event => {
2. var keepList = ['assets-v1'];
3.
4. event.waitUntil(
5. caches.keys().then(cacheNameList => {
6. return Promise.all(cacheNameList
7. .map(cacheName => {
8. if (keepList.indexOf(cacheName) === -1) {
9. return caches.delete(cacheName);
10. }
11. }));
12. })
13. );
14. }
sw.js
CICLODEVIDA
CICLODEVIDA
1. self.addEventListener('fetch', event => {
2. event.respondWith(
3. caches.match(event.request).then(response => {
4. return response || fetch(event.request)
5. .catch(() => {
6. return caches.match('/fallback.htm1');
7. });
8. })
9. );
10. }
sw.js
CACHEAPIS
CACHES API
ANATOMY
REQUEST	(URL) RESPONSE
https://wea.app/index.html <!doctype html>
https://wea.app/script.js console.log('hi')
.	.	.	
key / value storage
Cache API
URL-addressable resources
-----or -----
Indexed DB
Other data
PUSHNOTIFICATIONS
1. navigator.serviceWorker.register('sw.js')
2. .then(reg => {
3. return reg.pushManager.getSubscription()
4. .then(subscription => {
5. if (subscription) return subscription;
6. return registration.pushManager.subscribe({
7. userVisibleOnly: true,
8. applicationServerKey: appPubkey
9. });
10. });
11. })
index.html
1. self.addEventListener('push', event => {
2. var payload = event.data ?
3. event.data.text() : 'no payload';
4. event.waitUntil(
5. registration.showNotification('WEATHER ADVISORY', {
6. body: payload,
7. icon: 'icon.png'
8. })
9. );
10. }
sw.js
1. self.addEventListener('notificationclick', event => {
2. event.notification.close();
3. event.waitUntil(clients
4. .openWindow('https://wea.app/advisory'));
5. }
sw.js
PROGRESSIVEWEBAPPS
ENWINDOWS
¿COMOHACEUNUSUARIOPARA
ENCONTRARUNAPROGRESSIVE
WEBAPP?
AHORAMISMO:STORE&BING
PROGRESSIVEWEBAPPS
¿¡¿ENWINDOWSSTORE?!?
PROGRESSIVEWEBAPPS
¿¡¿ENWINDOWSSTORE?!?
PWASENWINDOWSSTORE
• Presentación activa
PWASENWINDOWSSTORE
• Presentación activa
• Ingestión Pasiva
No hacer nada y Microsoft va a agregar tu PWA
automaticamente *
* Se puede no hacerlo usando robots.txt
ANULANDOCONROBOTS.TXT
PWASENLOSSTORES
app.manifest
popula la
entrada:
1. name
2. description
3. icons
4. screenshots
DESDELAPERSPECTIVADEL
USUARIO,
UNAPWAVAASERUNAAPP.
¡ANUESTROSUSUARIOSNOLES
INTERESAQUETECNOLOGIA
USAMOS!
Quieren usar nuestra app
UNAPWAESSUPERSIMPLEDE
HACERYLOSBENEFICIOSSON
IMPORTANTES.
BIT.LY/
PWA-WORKSHOP-NETCONF
Github: https://github.com/PWA-espanol/workshop
¡MUCHASGRACIAS!
@nbellocam
¿Preguntas?

Más contenido relacionado

Similar a Progressive Web Apps - .NET Conf CO 2017

Webutil 090812113116-phpapp01
Webutil 090812113116-phpapp01Webutil 090812113116-phpapp01
Webutil 090812113116-phpapp01
emonsalve
 

Similar a Progressive Web Apps - .NET Conf CO 2017 (20)

Asp.net
Asp.netAsp.net
Asp.net
 
ASP.NET Guia de desarrollo de sitios y aplicaciones web dinamicas
ASP.NET Guia de desarrollo de sitios y aplicaciones web dinamicasASP.NET Guia de desarrollo de sitios y aplicaciones web dinamicas
ASP.NET Guia de desarrollo de sitios y aplicaciones web dinamicas
 
Servicios web
Servicios webServicios web
Servicios web
 
Tema servlets
Tema servletsTema servlets
Tema servlets
 
Tema servlets
Tema servletsTema servlets
Tema servlets
 
Tema servlets
Tema servletsTema servlets
Tema servlets
 
Servicios web
Servicios webServicios web
Servicios web
 
Servicios web
Servicios webServicios web
Servicios web
 
eyeOS: Arquitectura y desarrollo de una aplicación
eyeOS: Arquitectura y desarrollo de una aplicacióneyeOS: Arquitectura y desarrollo de una aplicación
eyeOS: Arquitectura y desarrollo de una aplicación
 
Instalación de Roller sobre Glassfish3
Instalación de Roller sobre Glassfish3Instalación de Roller sobre Glassfish3
Instalación de Roller sobre Glassfish3
 
Introducción al desarrollo Web: Frontend con Angular 6
Introducción al desarrollo Web: Frontend con Angular 6Introducción al desarrollo Web: Frontend con Angular 6
Introducción al desarrollo Web: Frontend con Angular 6
 
Codemotion 2017 - Taller de JHipster
Codemotion 2017 - Taller de JHipsterCodemotion 2017 - Taller de JHipster
Codemotion 2017 - Taller de JHipster
 
Cien usos con serverless
Cien usos con serverlessCien usos con serverless
Cien usos con serverless
 
WordPress Multisite, un WordPress para dominarlos a todos
WordPress Multisite, un WordPress para dominarlos a todosWordPress Multisite, un WordPress para dominarlos a todos
WordPress Multisite, un WordPress para dominarlos a todos
 
Servicio web soap en java con net beans
Servicio web soap en java con net beansServicio web soap en java con net beans
Servicio web soap en java con net beans
 
Webutil
WebutilWebutil
Webutil
 
Webutil
WebutilWebutil
Webutil
 
Webutil 090812113116-phpapp01
Webutil 090812113116-phpapp01Webutil 090812113116-phpapp01
Webutil 090812113116-phpapp01
 
HTML 5 & WebGL (Spanish Version)
HTML 5 & WebGL (Spanish Version)HTML 5 & WebGL (Spanish Version)
HTML 5 & WebGL (Spanish Version)
 
Taller integracion jsf spring
Taller integracion jsf springTaller integracion jsf spring
Taller integracion jsf spring
 

Más de Nicolás Bello Camilletti

Más de Nicolás Bello Camilletti (16)

Novedades en CI/CD
Novedades en CI/CDNovedades en CI/CD
Novedades en CI/CD
 
Progressive web apps
Progressive web appsProgressive web apps
Progressive web apps
 
Personalizando experiencias de usuario con Reinforcement learning y Azure
Personalizando experiencias de usuario con Reinforcement learning y AzurePersonalizando experiencias de usuario con Reinforcement learning y Azure
Personalizando experiencias de usuario con Reinforcement learning y Azure
 
Progressive Web Apps - Workshop
Progressive Web Apps - WorkshopProgressive Web Apps - Workshop
Progressive Web Apps - Workshop
 
Progressive Web Apps
Progressive Web AppsProgressive Web Apps
Progressive Web Apps
 
Progressive Web Apps
Progressive Web AppsProgressive Web Apps
Progressive Web Apps
 
Introducción a .NET Core y Docker
Introducción a .NET Core y DockerIntroducción a .NET Core y Docker
Introducción a .NET Core y Docker
 
Creando una SPA con Angular y ASP.NET Core
Creando una SPA con Angular y ASP.NET CoreCreando una SPA con Angular y ASP.NET Core
Creando una SPA con Angular y ASP.NET Core
 
Creando una SPA con Angular 2 y ASP.NET Core
Creando una SPA con Angular 2 y ASP.NET CoreCreando una SPA con Angular 2 y ASP.NET Core
Creando una SPA con Angular 2 y ASP.NET Core
 
Creando una SPA con Angular 2 y ASP.NET Core
Creando una SPA con Angular 2 y ASP.NET CoreCreando una SPA con Angular 2 y ASP.NET Core
Creando una SPA con Angular 2 y ASP.NET Core
 
Introducción a Docker
Introducción a DockerIntroducción a Docker
Introducción a Docker
 
Clase Html + CSS
Clase Html + CSSClase Html + CSS
Clase Html + CSS
 
Windows Azure DPE Toolkits
Windows Azure DPE ToolkitsWindows Azure DPE Toolkits
Windows Azure DPE Toolkits
 
Grails
GrailsGrails
Grails
 
Groovy.v2
Groovy.v2Groovy.v2
Groovy.v2
 
Groovy
GroovyGroovy
Groovy
 

Último

Editorial. Grupo de 12B de La Salle Margarita.pdf
Editorial. Grupo de 12B de La Salle Margarita.pdfEditorial. Grupo de 12B de La Salle Margarita.pdf
Editorial. Grupo de 12B de La Salle Margarita.pdf
Yanitza28
 
microsoft word manuales para todos tipos de estudiamte
microsoft word manuales para todos tipos de estudiamtemicrosoft word manuales para todos tipos de estudiamte
microsoft word manuales para todos tipos de estudiamte
2024020140
 
Chat GPT para la educación Latinoamerica
Chat GPT para la educación LatinoamericaChat GPT para la educación Latinoamerica
Chat GPT para la educación Latinoamerica
EdwinGarca59
 

Último (20)

Navegadores de internet - Nuevas Tecnologías de la Información y la Comunicación
Navegadores de internet - Nuevas Tecnologías de la Información y la ComunicaciónNavegadores de internet - Nuevas Tecnologías de la Información y la Comunicación
Navegadores de internet - Nuevas Tecnologías de la Información y la Comunicación
 
Editorial. Grupo de 12B de La Salle Margarita.pdf
Editorial. Grupo de 12B de La Salle Margarita.pdfEditorial. Grupo de 12B de La Salle Margarita.pdf
Editorial. Grupo de 12B de La Salle Margarita.pdf
 
Introduccion-a-la-electronica-industrial.pptx
Introduccion-a-la-electronica-industrial.pptxIntroduccion-a-la-electronica-industrial.pptx
Introduccion-a-la-electronica-industrial.pptx
 
De Olmos Santiago_Dolores _ M1S3AI6.pptx
De Olmos Santiago_Dolores _ M1S3AI6.pptxDe Olmos Santiago_Dolores _ M1S3AI6.pptx
De Olmos Santiago_Dolores _ M1S3AI6.pptx
 
10°8 - Avances tecnologicos del siglo XXI 10-8
10°8 - Avances tecnologicos del siglo XXI 10-810°8 - Avances tecnologicos del siglo XXI 10-8
10°8 - Avances tecnologicos del siglo XXI 10-8
 
Tipos de datos en Microsoft Access de Base de Datos
Tipos de datos en Microsoft Access de Base de DatosTipos de datos en Microsoft Access de Base de Datos
Tipos de datos en Microsoft Access de Base de Datos
 
Desarrollo del Dominio del Internet - Estrada
Desarrollo del Dominio del Internet - EstradaDesarrollo del Dominio del Internet - Estrada
Desarrollo del Dominio del Internet - Estrada
 
Actividad 6/Las TIC en la Vida Cotidiana.
Actividad 6/Las TIC en la Vida Cotidiana.Actividad 6/Las TIC en la Vida Cotidiana.
Actividad 6/Las TIC en la Vida Cotidiana.
 
PRÁCTICA Nº 4: “Análisis de secuencias del ADN con el software BioEdit y uso ...
PRÁCTICA Nº 4: “Análisis de secuencias del ADN con el software BioEdit y uso ...PRÁCTICA Nº 4: “Análisis de secuencias del ADN con el software BioEdit y uso ...
PRÁCTICA Nº 4: “Análisis de secuencias del ADN con el software BioEdit y uso ...
 
presentación del desensamble y ensamble del equipo de computo en base a las n...
presentación del desensamble y ensamble del equipo de computo en base a las n...presentación del desensamble y ensamble del equipo de computo en base a las n...
presentación del desensamble y ensamble del equipo de computo en base a las n...
 
AVANCES TECNOLOGICOS DEL SIGLO XXI. 10-08..pptx
AVANCES TECNOLOGICOS  DEL SIGLO XXI. 10-08..pptxAVANCES TECNOLOGICOS  DEL SIGLO XXI. 10-08..pptx
AVANCES TECNOLOGICOS DEL SIGLO XXI. 10-08..pptx
 
BUSCADORES DE INTERNET (Universidad de Sonora).
BUSCADORES DE INTERNET (Universidad de Sonora).BUSCADORES DE INTERNET (Universidad de Sonora).
BUSCADORES DE INTERNET (Universidad de Sonora).
 
Tarea_sesion_15_Reportes Maestro - Detalle con el uso de AJAX.pptx
Tarea_sesion_15_Reportes Maestro - Detalle con el uso de AJAX.pptxTarea_sesion_15_Reportes Maestro - Detalle con el uso de AJAX.pptx
Tarea_sesion_15_Reportes Maestro - Detalle con el uso de AJAX.pptx
 
el uso de las TIC en la vida cotidiana.pptx
el uso de las TIC en la vida cotidiana.pptxel uso de las TIC en la vida cotidiana.pptx
el uso de las TIC en la vida cotidiana.pptx
 
microsoft word manuales para todos tipos de estudiamte
microsoft word manuales para todos tipos de estudiamtemicrosoft word manuales para todos tipos de estudiamte
microsoft word manuales para todos tipos de estudiamte
 
Tipos de Datos de Microsoft Access-JOEL GARCIA.pptx
Tipos de Datos de Microsoft Access-JOEL GARCIA.pptxTipos de Datos de Microsoft Access-JOEL GARCIA.pptx
Tipos de Datos de Microsoft Access-JOEL GARCIA.pptx
 
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdfpresentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
 
herramientas web para estudiantes interesados en el tema
herramientas web para estudiantes interesados en el temaherramientas web para estudiantes interesados en el tema
herramientas web para estudiantes interesados en el tema
 
Imágenes digitales: Calidad de la información
Imágenes digitales: Calidad de la informaciónImágenes digitales: Calidad de la información
Imágenes digitales: Calidad de la información
 
Chat GPT para la educación Latinoamerica
Chat GPT para la educación LatinoamericaChat GPT para la educación Latinoamerica
Chat GPT para la educación Latinoamerica
 

Progressive Web Apps - .NET Conf CO 2017