168
Progressive Web Applications (PWA)

Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Progressive Web Applications

(PWA)

Page 2: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

TemarioTemario

Page 3: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

TemarioTemario

Concepto y estructura básicaApp manifest.Service Workers.Estrategias de caching con Service Workers.Web Push Notifications.

Page 4: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Introducción a lasIntroducción a lasPWAPWA

Page 5: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

PWA

Page 6: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

PWADiferencias entre aplicaciones nativas y webs

Page 7: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

PWADiferencias entre aplicaciones nativas y websVentajas de web y de apps nativas

Page 8: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

PWADiferencias entre aplicaciones nativas y websVentajas de web y de apps nativasAplicaciones progresivas y multiplataforma

Page 9: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

PWADiferencias entre aplicaciones nativas y websVentajas de web y de apps nativasAplicaciones progresivas y multiplataformaAplicaciones web (HTML, CSS, JS)

Page 10: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

PWADiferencias entre aplicaciones nativas y websVentajas de web y de apps nativasAplicaciones progresivas y multiplataformaAplicaciones web (HTML, CSS, JS)Responsive

Page 11: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

PWADiferencias entre aplicaciones nativas y websVentajas de web y de apps nativasAplicaciones progresivas y multiplataformaAplicaciones web (HTML, CSS, JS)ResponsiveRápidas

Page 12: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

PWADiferencias entre aplicaciones nativas y websVentajas de web y de apps nativasAplicaciones progresivas y multiplataformaAplicaciones web (HTML, CSS, JS)ResponsiveRápidasTrabajan offline

Page 13: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

PWADiferencias entre aplicaciones nativas y websVentajas de web y de apps nativasAplicaciones progresivas y multiplataformaAplicaciones web (HTML, CSS, JS)ResponsiveRápidasTrabajan offlineUn solo lenguaje

Page 14: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

PWADiferencias entre aplicaciones nativas y websVentajas de web y de apps nativasAplicaciones progresivas y multiplataformaAplicaciones web (HTML, CSS, JS)ResponsiveRápidasTrabajan offlineUn solo lenguajeFácil distribución

Page 15: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

PWADiferencias entre aplicaciones nativas y websVentajas de web y de apps nativasAplicaciones progresivas y multiplataformaAplicaciones web (HTML, CSS, JS)ResponsiveRápidasTrabajan offlineUn solo lenguajeFácil distribuciónEnganchan al usuario

Page 16: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

PWADiferencias entre aplicaciones nativas y websVentajas de web y de apps nativasAplicaciones progresivas y multiplataformaAplicaciones web (HTML, CSS, JS)ResponsiveRápidasTrabajan offlineUn solo lenguajeFácil distribuciónEnganchan al usuarioAparecen en Google

Page 17: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

PWADiferencias entre aplicaciones nativas y websVentajas de web y de apps nativasAplicaciones progresivas y multiplataformaAplicaciones web (HTML, CSS, JS)ResponsiveRápidasTrabajan offlineUn solo lenguajeFácil distribuciónEnganchan al usuarioAparecen en GoogleSeguras

Page 18: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Entorno deEntorno dedesarrollodesarrollo

Page 20: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

GitGit

Page 21: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Comandos básicos

Page 22: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Comandos básicos

Clonar un repositorio:     git clone URL  

Page 23: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Comandos básicos

Clonar un repositorio:     git clone URL  Descargar última versión del repositorio:     git pull origin master

Page 24: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Configuración proxy

git config --global http.proxy http://username:password@host:port

git config --global https.proxy http://username:password@host:port

Page 25: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Node.js y npmNode.js y npm

Page 26: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

npm

Page 27: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

npm

Instalar última versión después de instalar Node.js (configurar proxy si es necesario): npm install -g npm

Page 28: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

npm

Instalar última versión después de instalar Node.js (configurar proxy si es necesario): npm install -g npmRepositorio de módulos distribuibles

Page 29: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

npm

Instalar última versión después de instalar Node.js (configurar proxy si es necesario): npm install -g npmRepositorio de módulos distribuiblesMódulos globales y módulos locales

Page 30: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

npm

Instalar última versión después de instalar Node.js (configurar proxy si es necesario): npm install -g npmRepositorio de módulos distribuiblesMódulos globales y módulos localesLa carpeta node_modules

Page 31: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

npm

Instalar última versión después de instalar Node.js (configurar proxy si es necesario): npm install -g npmRepositorio de módulos distribuiblesMódulos globales y módulos localesLa carpeta node_modulesEl archivo package.json:

Page 32: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

npm

Instalar última versión después de instalar Node.js (configurar proxy si es necesario): npm install -g npmRepositorio de módulos distribuiblesMódulos globales y módulos localesLa carpeta node_modulesEl archivo package.json:

Registro de dependencias

Page 33: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

npm

Instalar última versión después de instalar Node.js (configurar proxy si es necesario): npm install -g npmRepositorio de módulos distribuiblesMódulos globales y módulos localesLa carpeta node_modulesEl archivo package.json:

Registro de dependenciasDependencias de desarrollo y de producción

Page 34: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

npm

Instalar última versión después de instalar Node.js (configurar proxy si es necesario): npm install -g npmRepositorio de módulos distribuiblesMódulos globales y módulos localesLa carpeta node_modulesEl archivo package.json:

Registro de dependenciasDependencias de desarrollo y de producciónVersiones (SEMVER)

Page 35: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Comandos npm

Page 36: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Comandos npmInstalar un paquete globalmente:     npm install -g paquete

Page 37: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Comandos npmInstalar un paquete globalmente:     npm install -g paqueteInstalar un paquete de producción:     npm install paquete

Page 38: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Comandos npmInstalar un paquete globalmente:     npm install -g paqueteInstalar un paquete de producción:     npm install paqueteInstalar un paquete de desarrollo:     npm install paquete --save-dev

Page 39: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Comandos npmInstalar un paquete globalmente:     npm install -g paqueteInstalar un paquete de producción:     npm install paqueteInstalar un paquete de desarrollo:     npm install paquete --save-devInstalar todas las dependencias:     npm install

Page 40: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Comandos npmInstalar un paquete globalmente:     npm install -g paqueteInstalar un paquete de producción:     npm install paqueteInstalar un paquete de desarrollo:     npm install paquete --save-devInstalar todas las dependencias:     npm installInstalar las dependencias de producción:     npm install --production

Page 41: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Comandos npmInstalar un paquete globalmente:     npm install -g paqueteInstalar un paquete de producción:     npm install paqueteInstalar un paquete de desarrollo:     npm install paquete --save-devInstalar todas las dependencias:     npm installInstalar las dependencias de producción:     npm install --productionListar paquetes instalados:    npm list --depth=0        (locales)     npm list -g --depth=0   (globales)

Page 42: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Comandos npm

Page 43: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Comandos npmLanzar el ejecutable de un paquete: npx ejecutable (aunque no esté instalado)

Page 44: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Configuración proxy

npm config set proxy http://username:password@host:port

npm config set https-proxy http://username:password@host:port

Page 45: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

JavaScriptJavaScript

Page 46: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Funciones

Page 47: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Funciones

Pasar funciones anónimas como parámetros

Page 48: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Funciones

Pasar funciones anónimas como parámetrosFunciones callback

Page 49: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Funciones

Pasar funciones anónimas como parámetrosFunciones callbackFunciones arrow

Page 50: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Funciones

Pasar funciones anónimas como parámetrosFunciones callbackFunciones arrowmap() y filter()

Page 51: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Promesas

Page 52: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Promesas

Procesos asíncronos

Page 53: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Promesas

Procesos asíncronosDos métodos principales: then() y catch()

Page 54: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Promesas

Procesos asíncronosDos métodos principales: then() y catch()Encadenado de promesas

Page 55: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Promesas

Procesos asíncronosDos métodos principales: then() y catch()Encadenado de promesasEl método finally()

Page 56: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Promesas

Procesos asíncronosDos métodos principales: then() y catch()Encadenado de promesasEl método finally()Promise.all()

Page 57: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Promesas

Procesos asíncronosDos métodos principales: then() y catch()Encadenado de promesasEl método finally()Promise.all()async / await

Page 58: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Fetch API

Page 59: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Fetch API

Request y Response

Page 60: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Fetch API

Request y ResponseLa función fetch()

Page 61: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Fetch API

Request y ResponseLa función fetch()Nos interesa del Request:

Page 62: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Fetch API

Request y ResponseLa función fetch()Nos interesa del Request:

method

Page 63: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Fetch API

Request y ResponseLa función fetch()Nos interesa del Request:

methodmode

Page 64: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Fetch API

Request y ResponseLa función fetch()Nos interesa del Request:

methodmodedestination

Page 65: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Fetch API

Request y ResponseLa función fetch()Nos interesa del Request:

methodmodedestinationheaders

Page 66: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Fetch API

Request y ResponseLa función fetch()Nos interesa del Request:

methodmodedestinationheadersurl

Page 67: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Fetch API

Request y ResponseLa función fetch()Nos interesa del Request:

methodmodedestinationheadersurlbody

Page 68: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Fetch API

Page 69: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Fetch API

Nos interesa del Response:

Page 70: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Fetch API

Nos interesa del Response:ok

Page 71: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Fetch API

Nos interesa del Response:okstatus

Page 72: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Fetch API

Nos interesa del Response:okstatusheaders

Page 73: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Fetch API

Nos interesa del Response:okstatusheadersbody

Page 74: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Fetch API

Nos interesa del Response:okstatusheadersbody

body.text()

Page 75: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Fetch API

Nos interesa del Response:okstatusheadersbody

body.text()body.json()

Page 76: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

PWAPWA

Page 77: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Lighthouse

Page 78: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Lighthouse

Integrada en Chrome

Page 79: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Lighthouse

Integrada en ChromeTambién disponible como paquete npm

Page 80: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Lighthouse

Integrada en ChromeTambién disponible como Nos guía para saber qué le falta a nuestra PWA

paquete npm

Page 81: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Web manifest

Page 82: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Web manifest

Información sobre la apariencia de la app instalada

Page 83: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Web manifest

Información sobre la apariencia de la app instaladaArchivo JSON

Page 84: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Web manifest

Información sobre la apariencia de la app instaladaArchivo JSON<link rel="manifest">

Page 85: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Web manifest

Page 86: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Web manifest

Estructura:

Page 87: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Web manifest

Estructura:

{ "name": "Nombre de la app", "short_name": "Nombre corto", "theme_color": "#2196f3", "background_color": "#2196f3", "display": "standalone", "start_url": "/", "icons": [ { "src": "images/icons/icon-192x192.png", "sizes": "192x192", "type": "image/png" }, { "src": "images/icons/icon-512x512.png", "sizes": "512x512", "type": "image/png" } ]}

123456789

1011121314151617181920

Page 88: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Web manifest

Page 89: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Web manifest

Iconos para web

Page 90: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Web manifest

Iconos para web

<link rel="icon" type="image/png" sizes="32x32" href="<ruta>/favicon-32x32.png<link rel="icon" type="image/png" sizes="16x16" href="<ruta>/favicon-16x16.png<link rel="shortcut icon" href="<ruta>/favicon.ico">

Page 91: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Web manifest

Page 92: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Web manifest

Iconos para Android  (mínimo 192x192 y 512x512)

Page 93: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Web manifest

Iconos para Android  (mínimo 192x192 y 512x512)

"icons": [ { "src": "images/icons/icon-72x72.png", "sizes": "72x72", "type": "image/png" }, { "src": "images/icons/icon-96x96.png", "sizes": "96x96", "type": "image/png" }, { "src": "images/icons/icon-128x128.png", "sizes": "128x128", "type": "image/png" }, {

Page 94: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Web manifest

Page 96: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Web manifest

iOS    ( )� documentación

<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, <meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-touch-fullscreen" content="yes"> <meta name="apple-mobile-web-app-title" content="appTitle"> <meta name="apple-mobile-web-app-status-bar-style" content="default"> <link rel="apple-touch-icon" sizes="180x180" href="<ruta>/apple-touch-icon.png"> <link rel="apple-touch-startup-image" media="(device-width: 375px) and (device-height: 8<link rel="apple-touch-startup-image" media="(device-width: 375px) and (device-height: 6<link rel="apple-touch-startup-image" media="(device-width: 414px) and (device-height: 7<link rel="apple-touch-startup-image" media="(device-width: 320px) and (device-height: 5<link rel="apple-touch-startup-image" media="(device-width: 768px) and (device-height: 1<link rel="apple-touch-startup-image" media="(device-width: 834px) and (device-height: 1<link rel="apple-touch-startup-image" media="(device-width: 1024px) and (device-height:

Page 97: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Service workers

Page 98: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Service workers

JavaScript que corre en un hilo paralelo

Page 99: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Service workers

JavaScript que corre en un hilo paraleloProxy entre la app y la red

Page 100: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Service workers

JavaScript que corre en un hilo paraleloProxy entre la app y la redRegistro de un SW

Page 101: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Service workers

JavaScript que corre en un hilo paraleloProxy entre la app y la redRegistro de un SWCiclo de vida de un SW

Page 102: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Service workers

Page 103: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Service workers

Condiciones para que la PWA sea instalable:

Page 104: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Service workers

Condiciones para que la PWA sea instalable:Manifest con:

name o short_namestart_urldisplay: "standalone" | "fullscreen" | "minimal-ui"icons: 512 y 192

Page 105: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Service workers

Condiciones para que la PWA sea instalable:Manifest con:

name o short_namestart_urldisplay: "standalone" | "fullscreen" | "minimal-ui"icons: 512 y 192

Service Worker con evento fetch

Page 106: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Service workers

Condiciones para que la PWA sea instalable:Manifest con:

name o short_namestart_urldisplay: "standalone" | "fullscreen" | "minimal-ui"icons: 512 y 192

Service Worker con evento fetchHTTPS

Page 107: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Service workers

Page 108: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Service workers

El prompt de instalación

Page 109: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Service workers

El prompt de instalaciónEl evento beforeinstallprompt:

Page 110: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Service workers

El prompt de instalaciónEl evento beforeinstallprompt:

preventDefault() para que no aparezca el de Android

Page 111: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Service workers

El prompt de instalaciónEl evento beforeinstallprompt:

preventDefault() para que no aparezca el de AndroidLanzar el prompt con un gesto del usuario

Page 112: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Service workers

El prompt de instalaciónEl evento beforeinstallprompt:

preventDefault() para que no aparezca el de AndroidLanzar el prompt con un gesto del usuarioLeer userChoice

Page 113: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Service workers

El prompt de instalaciónEl evento beforeinstallprompt:

preventDefault() para que no aparezca el de AndroidLanzar el prompt con un gesto del usuarioLeer userChoiceComprobar si se está abriendo la app instalada

Page 114: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Service workers

El prompt de instalaciónEl evento beforeinstallprompt:

preventDefault() para que no aparezca el de AndroidLanzar el prompt con un gesto del usuarioLeer userChoiceComprobar si se está abriendo la app instalada

if (window.matchMedia('(display-mode: standalone)').matches console.log('Desde la app instalada');}

123

Page 115: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Service workers

El prompt de instalaciónEl evento beforeinstallprompt:

preventDefault() para que no aparezca el de AndroidLanzar el prompt con un gesto del usuarioLeer userChoiceComprobar si se está abriendo la app instalada

let eventoInstall; window.addEventListener('beforeinstallprompt', e => { eventoInstall = e; e.preventDefault(); document.querySelector('.install').removeAttribute('hidden');}) document.querySelector('.install').addEventListener('click', () => { eventoInstall.prompt(); eventoInstall.userChoice.then(ch => { if (ch.outcome === 'accepted') { console.log('El usuario ha aceptado instalar'); } else { console.log('El usuario no ha aceptado instalar'); } document.querySelector('.install').setAttribute('hidden', true); });}); window.addEventListener('appinstalled', () => console.log("El usuario ha instalado la aplicac

123456789

101112131415161718192021

Page 116: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Caché

Page 117: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Caché

CacheStorage API:

Page 118: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Caché

CacheStorage API:open()

Page 119: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Caché

CacheStorage API:open()addAll()

Page 120: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Caché

CacheStorage API:open()addAll()put()

Page 121: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Caché

CacheStorage API:open()addAll()put()match()

Page 122: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Caché

CacheStorage API:open()addAll()put()match()keys()

Page 123: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Estrategias de caching

Cache only

Page 124: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Estrategias de caching

Cache only

Page 125: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Estrategias de caching

Cache onlyNetwork only

Page 126: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Estrategias de caching

Cache onlyNetwork only

Page 127: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Estrategias de caching

Cache onlyNetwork onlyCache with fallback to network

Page 128: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Estrategias de caching

Cache onlyNetwork onlyCache with fallback to network

Page 129: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Estrategias de caching

Cache onlyNetwork onlyCache with fallback to networkNetwork with fallback to cache

Page 130: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Estrategias de caching

Cache onlyNetwork onlyCache with fallback to networkNetwork with fallback to cache

Page 131: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Estrategias de caching

Cache onlyNetwork onlyCache with fallback to networkNetwork with fallback to cacheStale while revalidate

Page 132: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Estrategias de caching

Cache onlyNetwork onlyCache with fallback to networkNetwork with fallback to cacheStale while revalidate

Page 133: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Estrategias de caching

Cache onlyNetwork onlyCache with fallback to networkNetwork with fallback to cacheStale while revalidateGeneric fallback

Page 134: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Estrategias de caching

Cache onlyNetwork onlyCache with fallback to networkNetwork with fallback to cacheStale while revalidateGeneric fallback

Page 135: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Estrategias de caching

Cache onlyNetwork onlyCache with fallback to networkNetwork with fallback to cacheStale while revalidateGeneric fallbackCache then network

Page 136: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Estrategias de caching

Cache onlyNetwork onlyCache with fallback to networkNetwork with fallback to cacheStale while revalidateGeneric fallbackCache then network

Page 137: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Workbox

Page 138: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Workbox

Instalar: npm install [-g] [--save-dev] workbox-cli

Page 139: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Workbox

Instalar: npm install [-g] [--save-dev] workbox-cliGenerar configuración: workbox wizard --injectManifest

Page 140: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Workbox

Instalar: npm install [-g] [--save-dev] workbox-cliGenerar configuración: workbox wizard --injectManifestEl SW fuente tiene que tener esta línea: workbox.precaching.precacheAndRoute([]);

Page 141: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Workbox

Instalar: npm install [-g] [--save-dev] workbox-cliGenerar configuración: workbox wizard --injectManifestEl SW fuente tiene que tener esta línea: workbox.precaching.precacheAndRoute([]);workbox injectManifest

Page 142: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Workbox

Instalar: npm install [-g] [--save-dev] workbox-cliGenerar configuración: workbox wizard --injectManifestEl SW fuente tiene que tener esta línea: workbox.precaching.precacheAndRoute([]);workbox injectManifest

importScripts('https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox-sw workbox.routing.registerRoute( /\.css$/, new workbox.strategies.CacheFirst();); workbox.routing.registerRoute( /\.(?:png|gif|jpg|jpeg|svg)$/, new workbox.strategies.StaleWhileRevalidate({ cacheName: '', plugins: [ new workbox.expiration.Plugin({ maxEntries: 100, maxAgeSeconds: 7 * 24 * 60 * 60, }), ], }););

123456789

10111213141516171819

Page 143: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Notificaciones PUSH

Page 144: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Notificaciones PUSH

Entran en juego:

Page 145: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Notificaciones PUSH

Entran en juego:La app

Page 146: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Notificaciones PUSH

Entran en juego:La appEl Service Worker

Page 147: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Notificaciones PUSH

Entran en juego:La appEl Service WorkerEl servicio PUSH del navegador

Page 148: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Notificaciones PUSH

Entran en juego:La appEl Service WorkerEl servicio PUSH del navegadorUn servicio de Google, Firefox...

Page 149: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Notificaciones PUSH

Entran en juego:La appEl Service WorkerEl servicio PUSH del navegadorUn servicio de Google, Firefox...Un servidor PUSH

Page 150: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Notificaciones PUSH

Page 151: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Notificaciones PUSH

La app:

Page 152: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Notificaciones PUSH

La app:Puede lanzar el prompt para preguntar al usuario sida permisos para notificaciones: Notification.requestPermission()

Page 153: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Notificaciones PUSH

La app:Puede lanzar el prompt para preguntar al usuario sida permisos para notificaciones: Notification.requestPermission()Puede preguntar si el usuario ya ha dado permisoso no: Notification.permission ('default', 'granted' o 'denied')

Page 154: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Notificaciones PUSH

La app:Puede lanzar el prompt para preguntar al usuario sida permisos para notificaciones: Notification.requestPermission()Puede preguntar si el usuario ya ha dado permisoso no: Notification.permission ('default', 'granted' o 'denied')Puede pedir una suscripción al servicio PUSH: reg.pushManager.subscribe({     userVisibleOnly: true,     applicationServerKey: <llave pública VAPID> });

Page 155: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Notificaciones PUSH

Page 156: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Notificaciones PUSH

La app:Cuando obtiene una suscripción del servicio PUSH,la envía a nuestro servidor PUSH, que laalmacenará.

Page 157: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Notificaciones PUSH

Page 158: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Notificaciones PUSH

El servidor PUSH:

Page 159: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Notificaciones PUSH

El servidor PUSH:Genera las claves VAPID

Page 160: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Notificaciones PUSH

El servidor PUSH:Genera las claves VAPIDUtiliza la librería web-push para enviarnotificaciones PUSH.

Page 161: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Notificaciones PUSH

El servidor PUSH:Genera las claves VAPIDUtiliza la librería web-push para enviarnotificaciones PUSH.web-push para varios lenguajes de back

Page 162: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Notificaciones PUSH

Page 163: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Notificaciones PUSH

El Service Worker:

Page 164: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Notificaciones PUSH

El Service Worker:Escucha el evento 'push'

Page 165: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Notificaciones PUSH

El Service Worker:Escucha el evento 'push'Emite una notificación al SO: self.registration.showNotification(título, )opciones

Page 166: Progressive Web Applications · Service workers Condiciones para que la PWA sea instalable: Manifest con: name o short_name start_url display: "standalone" | "fullscreen" | "minimal-ui"

Notificaciones PUSH

El Service Worker:Escucha el evento 'push'Emite una notificación al SO: self.registration.showNotification(título, )Puede capturar el click en la notificaciónescuchando al evento 'notificationclick'

opciones