SlideShare una empresa de Scribd logo
1 de 55
Descargar para leer sin conexión
Overview
Francesco Sciuti
https://www.acadevmy.it/intro
Chi sono?
Developer per scelta e per passione,
amante di nerdaggini di ogni tipo
ed amante della condivisione del sapere!
Da non troppo anche (quasi)
imprenditore!
Francesco Sciuti
https://www.acadevmy.it/intro
Software Factory
Francesco Sciuti
https://www.acadevmy.it/intro
Learning Factory
Francesco Sciuti
https://www.acadevmy.it/intro
Le tecnologie che prediligiamo
Francesco Sciuti
https://www.acadevmy.it/intro
We need you!
Francesco Sciuti
https://www.acadevmy.it/intro
Francesco Sciuti
https://www.acadevmy.it/intro
Francesco Sciuti
https://www.acadevmy.it/intro
Francesco Sciuti
https://www.acadevmy.it/intro
Francesco Sciuti
https://www.acadevmy.it/intro
Progressive Web App
Francesco Sciuti
https://www.acadevmy.it/intro
ma basta marchette e parliamo di...
Cosa sono le PWA?
“Progressive Web App è un termine che si riferisce ad applicazioni
web che vengono sviluppate e caricate come normali pagine web,
ma che si comportano in modo simile alle applicazioni native
quando utilizzate su un dispositivo mobile”
Wikipedia
Francesco Sciuti
https://www.acadevmy.it/intro
Cosa sono le PWA?
“Progressive Web App sono delle comuni web application che
sfruttano delle tecnologie (alcune neanche così nuove) che
consentono all’utente di vivere un’esperienza molto simile a quella
nativa, che sia essa mobile o desktop”
Me medesimo
Ciccio Sciuti 1 - 0 Wikipedia
Tiè!
Francesco Sciuti
https://www.acadevmy.it/intro
● Affidabilità
Funzionano anche in caso di instabilità di rete
● Rapidità
Si caricano istantaneamente e rispondono rapidamente alle interazioni
dell'utente
● Coinvolgimento
Sembrano applicazioni native sul dispositivo e offrono un'esperienza utente
ottimale
Cosa distingue una PWA?
Francesco Sciuti
https://www.acadevmy.it/intro
● Progressive
Grazie al Progressive Enhancement da cui
ereditano parte del nome
● Responsive
Si adattano quindi ai dispositivi che le ospitano
● Network Independent
Possono lavorare offline!
● App-like
Possono essere esteticamente uguali alle app
native, quindi ad esempio a tutto schermo
● Continuous Update
Hanno un processo di aggiornamento molto più
semplice in quanto web application
Quali caratteristiche hanno?
● Safe (HTTPS)
Viaggiano su protocollo sicuro
● Discoverable
Facilmente identificabili come applicazioni ma
rintracciabili dai motori di ricerca
● Re-engageable
Possono richiamare l’interesse degli utenti
tramite le Push Notification
● Installable
Possiamo installarle sui nostri dispositivi come
app native
● Linkable
Ci basta un url per raggiungerle
Francesco Sciuti
https://www.acadevmy.it/intro
Qualche differenza
Francesco Sciuti
https://www.acadevmy.it/intro
● Add to Home Screen
● Cache Management
● Push Notification
● App Shell
● Devices Interaction
● Persistance
● ...
Come fanno a fare tutto ciò?
Francesco Sciuti
https://www.acadevmy.it/intro
● Web Manifest
● Service Workers
● Server Side Rendering
● Web API Intersection Observer, Push API, Notification API, Cache API, etc...
● Client-side Storage IndexedDB
● Native App Integration Trusted Web Activities/WebAPK/APPX
● HTTPS
Con quali tecnologie?
Francesco Sciuti
https://www.acadevmy.it/intro
Vediamo insieme le principali...
Francesco Sciuti
https://www.acadevmy.it/intro
Manifest
Un semplice file JSON che consente di descrivere il
comportamento della nostra PWA
Il file manifest contiene tutte le informazioni necessarie all’ambiente che dovrà
eseguire la nostra app, consentendo quindi all’environment ospitante di sapere
quali sono il titolo o le icone da utilizzare per installare l’applicazione, lo scope di
esecuzione, alcuni aspetti estetici, etc...
Francesco Sciuti
https://www.acadevmy.it/intro
ManifestComunemente il file ha estensione .webmanifest
● Nome
● Icone
● Url di avvio
● Colore di fondo e del tema
● Modalità di visualizzazione
● Scope di esecuzione
● Orientamento
● Splash Screen
MDN Manifest
Apple Way
Francesco Sciuti
https://www.acadevmy.it/intro
Manifestdisplay parameter
Francesco Sciuti
https://www.acadevmy.it/intro
Service Workers
Sposando alcune API consentono di gestire funzionalità quali le notifiche push, la
gestione offline e la sincronizzazione in background.
Il cuore delle nostre PWA
❤
Francesco Sciuti
https://www.acadevmy.it/intro
Service Workers
Sono degli script che vengono eseguiti dal browser in processi
separati rispetto alla pagina che li registra e che lavorano quindi in
background.
I SW lavorano come dei proxy ed
intercettano tutto le richieste HTTP
dell’applicazione e decidono come
rispondere secondo la logica che
svilupperemo.
Francesco Sciuti
https://www.acadevmy.it/intro
Service Workers
● Gestione della Cache
● Gestione Push Notification
● Sync dei dati in background
● Lifecycle programmabile
● Processo separato e con un
proprio scope di esecuzione
MDN - Service Workers Overview
MDN - Service Workers Offline Implementation
IsServiceWorkerReady?
Offline Cookbook
Francesco Sciuti
https://www.acadevmy.it/intro
Service Workers
Francesco Sciuti
https://www.acadevmy.it/intro
Service Workers
Francesco Sciuti
https://www.acadevmy.it/intro
Service Workers
Le strategie - Cache Only
Francesco Sciuti
https://www.acadevmy.it/intro
Service Workers
Le strategie - Network Only
Francesco Sciuti
https://www.acadevmy.it/intro
Service Workers
Le strategie - Cache First
Francesco Sciuti
https://www.acadevmy.it/intro
Service Workers
Le strategie - Network First
Francesco Sciuti
https://www.acadevmy.it/intro
Service Workers
Le strategie - Stale-While-Revalidate
Francesco Sciuti
https://www.acadevmy.it/intro
Web API
Gli ingredienti indispensabili per un’ottima ricetta
Le Web API sono ormai molteplici e supportate rapidamente da tutti i browser sul
mercato, e molte di esse sono fondamentali per creare PWA e far si che siano
appunto progressive.
Francesco Sciuti
https://www.acadevmy.it/intro
● Service Worker API
Utili per la gestione proxy dello stato del network e della
comunicazione server.
● Notification/Push API
Due API usate per configurare e mostrare le notifiche
all’utente, ed iscriversi a un servizio push e ricevere messaggi
push
● Cache API
Possiamo installarle sui nostri dispositivi come app native
● Fetch API
Un modo flessibile e potente per ottenere risorse locali o
remote.
● Intersection Observer
Consente di configurare un callback che viene triggerato ogni
volta che un elemento, chiamato target, interseca il viewport
o un ulteriore elemento specificato.
Qualche API da usare
● FormData API
Fornisce un modo per costruire facilmente un insieme di
coppie chiave / valore che rappresentano i campi modulo
e i loro valori, da utilizzare con il metodo
XMLHttpRequest.send ()
● Channel Messaging API
Consente l'esecuzione di due script separati in contesti di
navigazione diversi allegati allo stesso documento.
● Background Sync
Consente di rimandare le azioni fino a quando l'utente non
ha una connettività stabile.
● Payment Request API
Standard aperto che sostituisce i flussi di pagamento
tradizionali consentendo ai commercianti di richiedere e
accettare qualsiasi pagamento in una singola chiamata
API.
● Streams API Francesco Sciuti
https://www.acadevmy.it/intro
Push Notification
Sebbene non siano ancora supportati su iOS, le nostre PWA
possono inviare notifiche push al browser con l'API Push.
L'API Push viene utilizzata insieme alle
Notification API per visualizzare il
messaggio.
Il vantaggio è che l'API Push consente la
consegna della notifica anche quando
l'utente non naviga sulla PWA, poiché
sono build on top sui Service Workers.
Francesco Sciuti
https://www.acadevmy.it/intro
Push Notification
● Un utente visita la PWA (quindi protetta tramite HTTPS);
● Viene richiesta l'autorizzazione per visualizzare le notifiche push;
● Se l'utente ha concesso l'autorizzazione, il token del dispositivo (endpoint)
viene inviato al Server e archiviato;
● Il Service Worker tiene d’occhio la ricezione di una notifica push;
● Il Server invia una richiesta POST HTTP all'endpoint
(che è un URL che contiene il token del dispositivo);
● Quando il Service Worker riceve una notifica esegue si prende carico
della gestione dell'evento, del recupero dei dati di notifica dal server e
della visualizzazione della notifica all'utente.
Francesco Sciuti
https://www.acadevmy.it/intro
Push Notification
Francesco Sciuti
https://www.acadevmy.it/intro
Push Notification
Francesco Sciuti
https://www.acadevmy.it/intro
Push Notification
Francesco Sciuti
https://www.acadevmy.it/intro
App Shell
Il minimo indispensabile per un rendering veloce
Per App Shell intendiamo tutto l’HTML, CSS e JS minimo ed indispensabile utile per
essere renderizzato immediatamente dal browser in modo da offrire all’utente un
immediato feedback visivo ed evitare l’abbandono della nostra PWA.
Francesco Sciuti
https://www.acadevmy.it/intro
App Shell
I Service Worker (sempre loro!)
memorizzano l'interfaccia di base (la
shell) della web application in modalità
Responsive Web Design.
Questa shell fornisce un layout statico
iniziale,nella quale il contenuto può
essere caricato sia progressivamente
che dinamicamente immediatamente.
Francesco Sciuti
https://www.acadevmy.it/intro
Mobile e Desktop
Le PWA offrono un’esperienza native-like sia su
mobile che su desktop.
Attualmente il supporto è offerto per lo più da Chrome…
ma ci si sta lavorando anche da altri fronti!
Francesco Sciuti
https://www.acadevmy.it/intro
Mobile e Desktop
Francesco Sciuti
https://www.acadevmy.it/intro
Mobile e Desktop
Francesco Sciuti
https://www.acadevmy.it/intro
Gli store
La pubblicazione sugli store di applicazioni sono
ufficialmente supportate su
Google Play Store e Windows Store
In queste occasioni sarà necessario lavorare su tecnologie
come TWA (Trusted Web Activity) o APPX
Per Apple è necessario invece continuare a lavorare come avremmo fatto con un’app Cordova…
con tutte le limitazioni che impone l’App Store.
Francesco Sciuti
https://www.acadevmy.it/intro
TWA in breve
● Costruisci una buona PWA
● Installa Android Studio
● Iscriviti a Google Play (e paga $25)
● Clona TWA Starter App per Android
● Aggiorna app / build.gradle
● Crea un keystore per firmare l’app
● Crea un Digital Asset Links e
distribuiscilo
● Genera un APK firmato
● Carica il APK firmato per Google Play
Francesco Sciuti
https://www.acadevmy.it/intro
La compatibilità
I browser sono molto avanti nell’implementazione delle
tecnologie utili per le PWA ma ancora la compatibilità non è
completa (soprattutto su IOS).
● Supporto parziale alle gesture
● Supporto parziale al Manifest
● Web API disponibili
● Tags specifici per IOS
● Add to Home Screen
● Splash Screen
● Supporto alle Push Notification
● Ciclo di Vita della PWA
● Orientation
IOS Status | IOS 12.2 Status
Francesco Sciuti
https://www.acadevmy.it/intro
I tools
COMPAT
Francesco Sciuti
https://www.acadevmy.it/intro
Qualche Links
Docs
● Google Developer PWA Docs
● MDN PWA Docs
● ServiceWorkers Cookbook
● PWA Checklist
● IsServiceWorkerReady?
● PWA & IOS 12.2
● PWA & IOS 11.3
Tools
● Lighthouse Report Viewer
● PWABuilder | PWA Starter Kit
● Workbox | Workbox in NG
● Web-Push
Case Studies
● Pinterest PWA
● Maps Go
● Tinder PWA
● Twitter Lite
Examples / Labs
● Your First PWA
● Google PWA Training
● HNPWA
Directory
● PWA Stats
● AppScope
Francesco Sciuti
https://www.acadevmy.it/intro
...voglio ricordarvi…
(arimarchettiamo)
Francesco Sciuti
https://www.acadevmy.it/intro
We need you!
Francesco Sciuti
https://www.acadevmy.it/intro
Francesco Sciuti
https://www.acadevmy.it/intro
Francesco Sciuti
https://www.acadevmy.it/intro
Francesco Sciuti
https://www.acadevmy.it/intro
Grazie a tutti!
Francesco Sciuti
https://www.acadevmy.it/intro

Más contenido relacionado

La actualidad más candente

AngularJS – Reinventare le applicazioni web
AngularJS – Reinventare le applicazioni webAngularJS – Reinventare le applicazioni web
AngularJS – Reinventare le applicazioni web
Luca Milan
 
Sviluppo Web Agile Con MonoRail
Sviluppo Web Agile Con MonoRailSviluppo Web Agile Con MonoRail
Sviluppo Web Agile Con MonoRail
Stefano Ottaviani
 
Utilizzare Windows Vista come Software Developer
Utilizzare Windows Vista come Software DeveloperUtilizzare Windows Vista come Software Developer
Utilizzare Windows Vista come Software Developer
Stefano Ottaviani
 
Generazione Dinamica di Codice in .NET
Generazione Dinamica di Codice in .NETGenerazione Dinamica di Codice in .NET
Generazione Dinamica di Codice in .NET
Stefano Ottaviani
 

La actualidad más candente (17)

AngularJS – Reinventare le applicazioni web
AngularJS – Reinventare le applicazioni webAngularJS – Reinventare le applicazioni web
AngularJS – Reinventare le applicazioni web
 
JBoss Seam, un framework per Java EE 5
JBoss Seam, un framework per Java EE 5JBoss Seam, un framework per Java EE 5
JBoss Seam, un framework per Java EE 5
 
Realizzare applicazioni cross-platform con Xamarin e il pattern MVVM
Realizzare applicazioni cross-platform con Xamarin e il pattern MVVMRealizzare applicazioni cross-platform con Xamarin e il pattern MVVM
Realizzare applicazioni cross-platform con Xamarin e il pattern MVVM
 
Sviluppo Web Agile Con MonoRail
Sviluppo Web Agile Con MonoRailSviluppo Web Agile Con MonoRail
Sviluppo Web Agile Con MonoRail
 
Angular js o React? Spunti e idee per la scelta di un framework
Angular js o React? Spunti e idee per la scelta di un frameworkAngular js o React? Spunti e idee per la scelta di un framework
Angular js o React? Spunti e idee per la scelta di un framework
 
Il Web orientato al futuro: Express, Angular e nodeJS
Il Web orientato al futuro: Express, Angular e nodeJS Il Web orientato al futuro: Express, Angular e nodeJS
Il Web orientato al futuro: Express, Angular e nodeJS
 
#dd12 grillo daniele_xpages_tips_tricks_rev2
#dd12 grillo daniele_xpages_tips_tricks_rev2#dd12 grillo daniele_xpages_tips_tricks_rev2
#dd12 grillo daniele_xpages_tips_tricks_rev2
 
Spring @Aspect e @Controller
Spring @Aspect e @Controller Spring @Aspect e @Controller
Spring @Aspect e @Controller
 
Alessandro Forte - Realizzare controlli Ajax in ASP.Net
Alessandro Forte - Realizzare controlli Ajax in ASP.NetAlessandro Forte - Realizzare controlli Ajax in ASP.Net
Alessandro Forte - Realizzare controlli Ajax in ASP.Net
 
Model-View-ViewModel con Windows Store Apps
Model-View-ViewModel con Windows Store AppsModel-View-ViewModel con Windows Store Apps
Model-View-ViewModel con Windows Store Apps
 
I came, I saw, I GO! - Golangit meetup @ Codemotion Rome 2014
I came, I saw, I GO! - Golangit meetup @ Codemotion Rome 2014I came, I saw, I GO! - Golangit meetup @ Codemotion Rome 2014
I came, I saw, I GO! - Golangit meetup @ Codemotion Rome 2014
 
Utilizzare Windows Vista come Software Developer
Utilizzare Windows Vista come Software DeveloperUtilizzare Windows Vista come Software Developer
Utilizzare Windows Vista come Software Developer
 
Generazione Dinamica di Codice in .NET
Generazione Dinamica di Codice in .NETGenerazione Dinamica di Codice in .NET
Generazione Dinamica di Codice in .NET
 
Spring Framework
Spring FrameworkSpring Framework
Spring Framework
 
Le novità di Ionic 4- Il framework basato su Angular per sviluppare applicazi...
Le novità di Ionic 4- Il framework basato su Angular per sviluppare applicazi...Le novità di Ionic 4- Il framework basato su Angular per sviluppare applicazi...
Le novità di Ionic 4- Il framework basato su Angular per sviluppare applicazi...
 
Workshop AngularJs, Cordova, Ionic - Politecnico di Milano
Workshop AngularJs, Cordova, Ionic - Politecnico di MilanoWorkshop AngularJs, Cordova, Ionic - Politecnico di Milano
Workshop AngularJs, Cordova, Ionic - Politecnico di Milano
 
Corso progettazione
Corso progettazioneCorso progettazione
Corso progettazione
 

Similar a Acadevmy - PWA Overview

Win02 bing e windows store apps
Win02   bing e windows store appsWin02   bing e windows store apps
Win02 bing e windows store apps
DotNetCampus
 
Smau milano 2012 arena social media matteo-collina
Smau milano 2012   arena social media matteo-collinaSmau milano 2012   arena social media matteo-collina
Smau milano 2012 arena social media matteo-collina
SMAU
 
Sviluppo di servizi REST per Android - Luca Masini
Sviluppo di servizi REST per Android - Luca Masini Sviluppo di servizi REST per Android - Luca Masini
Sviluppo di servizi REST per Android - Luca Masini
Whymca
 

Similar a Acadevmy - PWA Overview (20)

Meetup Fluent Design e Progressive Web App
Meetup Fluent Design e Progressive Web AppMeetup Fluent Design e Progressive Web App
Meetup Fluent Design e Progressive Web App
 
Meetup Progressive Web App
Meetup Progressive Web AppMeetup Progressive Web App
Meetup Progressive Web App
 
Swagger per tutti
Swagger per tuttiSwagger per tutti
Swagger per tutti
 
Un backend per tutte le stagioni con Spring
Un backend per tutte le stagioni con SpringUn backend per tutte le stagioni con Spring
Un backend per tutte le stagioni con Spring
 
Win02 bing e windows store apps
Win02   bing e windows store appsWin02   bing e windows store apps
Win02 bing e windows store apps
 
Modi innovativi per costruire App
Modi innovativi per costruire AppModi innovativi per costruire App
Modi innovativi per costruire App
 
DotNetCampus 2014 - BING e Windows Store App
DotNetCampus 2014 - BING e Windows Store AppDotNetCampus 2014 - BING e Windows Store App
DotNetCampus 2014 - BING e Windows Store App
 
Microsoft Fast - Overview
Microsoft Fast - OverviewMicrosoft Fast - Overview
Microsoft Fast - Overview
 
Stanco delle solite Web App? Passa al Prgressive
Stanco delle solite Web App? Passa al PrgressiveStanco delle solite Web App? Passa al Prgressive
Stanco delle solite Web App? Passa al Prgressive
 
Sviluppare estensioni per google chrome
Sviluppare estensioni per google chromeSviluppare estensioni per google chrome
Sviluppare estensioni per google chrome
 
WordCamp Catania 2019 PWA e TWA
WordCamp Catania 2019 PWA e TWAWordCamp Catania 2019 PWA e TWA
WordCamp Catania 2019 PWA e TWA
 
WordPress REST API
WordPress REST APIWordPress REST API
WordPress REST API
 
Smau milano 2012 arena social media matteo-collina
Smau milano 2012   arena social media matteo-collinaSmau milano 2012   arena social media matteo-collina
Smau milano 2012 arena social media matteo-collina
 
L'universo dietro alle App
L'universo dietro alle AppL'universo dietro alle App
L'universo dietro alle App
 
JAX-WS e JAX-RS
JAX-WS e JAX-RSJAX-WS e JAX-RS
JAX-WS e JAX-RS
 
RomaJS June 2022
RomaJS June 2022RomaJS June 2022
RomaJS June 2022
 
Swagger pertutti
Swagger pertuttiSwagger pertutti
Swagger pertutti
 
Integrazione con Visual Studio Online
Integrazione con Visual Studio OnlineIntegrazione con Visual Studio Online
Integrazione con Visual Studio Online
 
Sviluppo di servizi REST per Android - Luca Masini
Sviluppo di servizi REST per Android - Luca Masini Sviluppo di servizi REST per Android - Luca Masini
Sviluppo di servizi REST per Android - Luca Masini
 
SVILUPPO DI SERVIZI REST PER ANDROID
SVILUPPO DI SERVIZI REST PER ANDROIDSVILUPPO DI SERVIZI REST PER ANDROID
SVILUPPO DI SERVIZI REST PER ANDROID
 

Acadevmy - PWA Overview

  • 2. Chi sono? Developer per scelta e per passione, amante di nerdaggini di ogni tipo ed amante della condivisione del sapere! Da non troppo anche (quasi) imprenditore! Francesco Sciuti https://www.acadevmy.it/intro
  • 5. Le tecnologie che prediligiamo Francesco Sciuti https://www.acadevmy.it/intro
  • 6. We need you! Francesco Sciuti https://www.acadevmy.it/intro
  • 11. Progressive Web App Francesco Sciuti https://www.acadevmy.it/intro ma basta marchette e parliamo di...
  • 12. Cosa sono le PWA? “Progressive Web App è un termine che si riferisce ad applicazioni web che vengono sviluppate e caricate come normali pagine web, ma che si comportano in modo simile alle applicazioni native quando utilizzate su un dispositivo mobile” Wikipedia Francesco Sciuti https://www.acadevmy.it/intro
  • 13. Cosa sono le PWA? “Progressive Web App sono delle comuni web application che sfruttano delle tecnologie (alcune neanche così nuove) che consentono all’utente di vivere un’esperienza molto simile a quella nativa, che sia essa mobile o desktop” Me medesimo Ciccio Sciuti 1 - 0 Wikipedia Tiè! Francesco Sciuti https://www.acadevmy.it/intro
  • 14. ● Affidabilità Funzionano anche in caso di instabilità di rete ● Rapidità Si caricano istantaneamente e rispondono rapidamente alle interazioni dell'utente ● Coinvolgimento Sembrano applicazioni native sul dispositivo e offrono un'esperienza utente ottimale Cosa distingue una PWA? Francesco Sciuti https://www.acadevmy.it/intro
  • 15. ● Progressive Grazie al Progressive Enhancement da cui ereditano parte del nome ● Responsive Si adattano quindi ai dispositivi che le ospitano ● Network Independent Possono lavorare offline! ● App-like Possono essere esteticamente uguali alle app native, quindi ad esempio a tutto schermo ● Continuous Update Hanno un processo di aggiornamento molto più semplice in quanto web application Quali caratteristiche hanno? ● Safe (HTTPS) Viaggiano su protocollo sicuro ● Discoverable Facilmente identificabili come applicazioni ma rintracciabili dai motori di ricerca ● Re-engageable Possono richiamare l’interesse degli utenti tramite le Push Notification ● Installable Possiamo installarle sui nostri dispositivi come app native ● Linkable Ci basta un url per raggiungerle Francesco Sciuti https://www.acadevmy.it/intro
  • 17. ● Add to Home Screen ● Cache Management ● Push Notification ● App Shell ● Devices Interaction ● Persistance ● ... Come fanno a fare tutto ciò? Francesco Sciuti https://www.acadevmy.it/intro
  • 18. ● Web Manifest ● Service Workers ● Server Side Rendering ● Web API Intersection Observer, Push API, Notification API, Cache API, etc... ● Client-side Storage IndexedDB ● Native App Integration Trusted Web Activities/WebAPK/APPX ● HTTPS Con quali tecnologie? Francesco Sciuti https://www.acadevmy.it/intro
  • 19. Vediamo insieme le principali... Francesco Sciuti https://www.acadevmy.it/intro
  • 20. Manifest Un semplice file JSON che consente di descrivere il comportamento della nostra PWA Il file manifest contiene tutte le informazioni necessarie all’ambiente che dovrà eseguire la nostra app, consentendo quindi all’environment ospitante di sapere quali sono il titolo o le icone da utilizzare per installare l’applicazione, lo scope di esecuzione, alcuni aspetti estetici, etc... Francesco Sciuti https://www.acadevmy.it/intro
  • 21. ManifestComunemente il file ha estensione .webmanifest ● Nome ● Icone ● Url di avvio ● Colore di fondo e del tema ● Modalità di visualizzazione ● Scope di esecuzione ● Orientamento ● Splash Screen MDN Manifest Apple Way Francesco Sciuti https://www.acadevmy.it/intro
  • 23. Service Workers Sposando alcune API consentono di gestire funzionalità quali le notifiche push, la gestione offline e la sincronizzazione in background. Il cuore delle nostre PWA ❤ Francesco Sciuti https://www.acadevmy.it/intro
  • 24. Service Workers Sono degli script che vengono eseguiti dal browser in processi separati rispetto alla pagina che li registra e che lavorano quindi in background. I SW lavorano come dei proxy ed intercettano tutto le richieste HTTP dell’applicazione e decidono come rispondere secondo la logica che svilupperemo. Francesco Sciuti https://www.acadevmy.it/intro
  • 25. Service Workers ● Gestione della Cache ● Gestione Push Notification ● Sync dei dati in background ● Lifecycle programmabile ● Processo separato e con un proprio scope di esecuzione MDN - Service Workers Overview MDN - Service Workers Offline Implementation IsServiceWorkerReady? Offline Cookbook Francesco Sciuti https://www.acadevmy.it/intro
  • 28. Service Workers Le strategie - Cache Only Francesco Sciuti https://www.acadevmy.it/intro
  • 29. Service Workers Le strategie - Network Only Francesco Sciuti https://www.acadevmy.it/intro
  • 30. Service Workers Le strategie - Cache First Francesco Sciuti https://www.acadevmy.it/intro
  • 31. Service Workers Le strategie - Network First Francesco Sciuti https://www.acadevmy.it/intro
  • 32. Service Workers Le strategie - Stale-While-Revalidate Francesco Sciuti https://www.acadevmy.it/intro
  • 33. Web API Gli ingredienti indispensabili per un’ottima ricetta Le Web API sono ormai molteplici e supportate rapidamente da tutti i browser sul mercato, e molte di esse sono fondamentali per creare PWA e far si che siano appunto progressive. Francesco Sciuti https://www.acadevmy.it/intro
  • 34. ● Service Worker API Utili per la gestione proxy dello stato del network e della comunicazione server. ● Notification/Push API Due API usate per configurare e mostrare le notifiche all’utente, ed iscriversi a un servizio push e ricevere messaggi push ● Cache API Possiamo installarle sui nostri dispositivi come app native ● Fetch API Un modo flessibile e potente per ottenere risorse locali o remote. ● Intersection Observer Consente di configurare un callback che viene triggerato ogni volta che un elemento, chiamato target, interseca il viewport o un ulteriore elemento specificato. Qualche API da usare ● FormData API Fornisce un modo per costruire facilmente un insieme di coppie chiave / valore che rappresentano i campi modulo e i loro valori, da utilizzare con il metodo XMLHttpRequest.send () ● Channel Messaging API Consente l'esecuzione di due script separati in contesti di navigazione diversi allegati allo stesso documento. ● Background Sync Consente di rimandare le azioni fino a quando l'utente non ha una connettività stabile. ● Payment Request API Standard aperto che sostituisce i flussi di pagamento tradizionali consentendo ai commercianti di richiedere e accettare qualsiasi pagamento in una singola chiamata API. ● Streams API Francesco Sciuti https://www.acadevmy.it/intro
  • 35. Push Notification Sebbene non siano ancora supportati su iOS, le nostre PWA possono inviare notifiche push al browser con l'API Push. L'API Push viene utilizzata insieme alle Notification API per visualizzare il messaggio. Il vantaggio è che l'API Push consente la consegna della notifica anche quando l'utente non naviga sulla PWA, poiché sono build on top sui Service Workers. Francesco Sciuti https://www.acadevmy.it/intro
  • 36. Push Notification ● Un utente visita la PWA (quindi protetta tramite HTTPS); ● Viene richiesta l'autorizzazione per visualizzare le notifiche push; ● Se l'utente ha concesso l'autorizzazione, il token del dispositivo (endpoint) viene inviato al Server e archiviato; ● Il Service Worker tiene d’occhio la ricezione di una notifica push; ● Il Server invia una richiesta POST HTTP all'endpoint (che è un URL che contiene il token del dispositivo); ● Quando il Service Worker riceve una notifica esegue si prende carico della gestione dell'evento, del recupero dei dati di notifica dal server e della visualizzazione della notifica all'utente. Francesco Sciuti https://www.acadevmy.it/intro
  • 40. App Shell Il minimo indispensabile per un rendering veloce Per App Shell intendiamo tutto l’HTML, CSS e JS minimo ed indispensabile utile per essere renderizzato immediatamente dal browser in modo da offrire all’utente un immediato feedback visivo ed evitare l’abbandono della nostra PWA. Francesco Sciuti https://www.acadevmy.it/intro
  • 41. App Shell I Service Worker (sempre loro!) memorizzano l'interfaccia di base (la shell) della web application in modalità Responsive Web Design. Questa shell fornisce un layout statico iniziale,nella quale il contenuto può essere caricato sia progressivamente che dinamicamente immediatamente. Francesco Sciuti https://www.acadevmy.it/intro
  • 42. Mobile e Desktop Le PWA offrono un’esperienza native-like sia su mobile che su desktop. Attualmente il supporto è offerto per lo più da Chrome… ma ci si sta lavorando anche da altri fronti! Francesco Sciuti https://www.acadevmy.it/intro
  • 43. Mobile e Desktop Francesco Sciuti https://www.acadevmy.it/intro
  • 44. Mobile e Desktop Francesco Sciuti https://www.acadevmy.it/intro
  • 45. Gli store La pubblicazione sugli store di applicazioni sono ufficialmente supportate su Google Play Store e Windows Store In queste occasioni sarà necessario lavorare su tecnologie come TWA (Trusted Web Activity) o APPX Per Apple è necessario invece continuare a lavorare come avremmo fatto con un’app Cordova… con tutte le limitazioni che impone l’App Store. Francesco Sciuti https://www.acadevmy.it/intro
  • 46. TWA in breve ● Costruisci una buona PWA ● Installa Android Studio ● Iscriviti a Google Play (e paga $25) ● Clona TWA Starter App per Android ● Aggiorna app / build.gradle ● Crea un keystore per firmare l’app ● Crea un Digital Asset Links e distribuiscilo ● Genera un APK firmato ● Carica il APK firmato per Google Play Francesco Sciuti https://www.acadevmy.it/intro
  • 47. La compatibilità I browser sono molto avanti nell’implementazione delle tecnologie utili per le PWA ma ancora la compatibilità non è completa (soprattutto su IOS). ● Supporto parziale alle gesture ● Supporto parziale al Manifest ● Web API disponibili ● Tags specifici per IOS ● Add to Home Screen ● Splash Screen ● Supporto alle Push Notification ● Ciclo di Vita della PWA ● Orientation IOS Status | IOS 12.2 Status Francesco Sciuti https://www.acadevmy.it/intro
  • 49. Qualche Links Docs ● Google Developer PWA Docs ● MDN PWA Docs ● ServiceWorkers Cookbook ● PWA Checklist ● IsServiceWorkerReady? ● PWA & IOS 12.2 ● PWA & IOS 11.3 Tools ● Lighthouse Report Viewer ● PWABuilder | PWA Starter Kit ● Workbox | Workbox in NG ● Web-Push Case Studies ● Pinterest PWA ● Maps Go ● Tinder PWA ● Twitter Lite Examples / Labs ● Your First PWA ● Google PWA Training ● HNPWA Directory ● PWA Stats ● AppScope Francesco Sciuti https://www.acadevmy.it/intro
  • 51. We need you! Francesco Sciuti https://www.acadevmy.it/intro
  • 55. Grazie a tutti! Francesco Sciuti https://www.acadevmy.it/intro