SlideShare a Scribd company logo
1 of 122
Giovanni Sacheli
Consulente SEO
Partner @ searcus.ch
Blogger @ evemilano.com
PWA – Progressive Web Apps
Rendi il tuo sito una App per
Android in 10 minuti
#inbound18
Cosa sono le PWA
PWA = Progressive Web Apps
Cosa sono le PWA
Tecnologia coniata da Google: "A new way to
deliver amazing user experiences on the web."
Cosa sono le PWA
Tecnologia che aggiunge specifiche funzionalità
ad un sito web.
Cosa sono le PWA
… is all about User Experience
Cosa sono le PWA
… is all about a FAST User Experience!
Cosa sono le PWA
Le PWA sono siti web che si possono installare
in smartphone Android in un modo simile alle
app native.
Cosa sono le PWA
La PWA combinano il meglio del web e la
migliore delle app.
Cosa sono le PWA
Questa tecnologia permette di installare nel
telefono un sito web, o parte di esso, per poter
essere fruito con particolari vantaggi in termini
di usabilità.
Cosa sono le PWA
Come si installa?
Navigando da mobile siti web con funzionalità
PWA viene chiesto all'utente di aggiungere il
sito nel telefono.
Web App Install Banners
Link
Video
Le obiezioni dello scettico
Perché
dovrei
installare
un’app
identica al
sito web?
Ti dirò che…
Non è esattamente la stessa cosa…
Ci sono diversi vantaggi a navigare il sito via
PWA.
Caratteristiche delle PWA
Indicizzabili
Progressive
Responsive
Accesso rapido
Accesso sicuro
Navigazione istantanea
Navigazione offline
Usabilità e UI
Migliorano Engagement
Re-engagement
Leggerezza
Personalizzabili
Indipendenti da app native
Indicizzabili
Le PWA sono indicizzabili da Google e quindi
possono posizionarsi e ricevere traffico
organico come qualsiasi altro sito web.
Indicizzabili
Una PWA,
come quella che ti presento in questa guida,
non è altro che un sito web.
Come tale, è scansionabile dai motori di ricerca,
è indicizzabile, si può posizionare ed ottenere
traffico organico, PPC, social, diretto, referral, …
Indicizzabili
Far indicizzare un’app nativa invece è tutt’altra
cosa.
Progressive
Cross browser.
Le PWA funzionano per ogni utente,
indipendentemente dalla scelta del browser.
Progressive – non solo Google
Responsive
Cross device.
Le PWA si adattano a qualsiasi display: desktop,
cellulare, tablet. What’s next?
Accesso rapido
L’icona dell’app sarà
inserita nel telefono
insieme alle altre app.
Basta un tap per
avviare il sito.
Accesso rapido
Rispetto ad aprire il
browser del telefono e
digitare l’URL o
cercarlo nei preferiti,
è sicuramente più
rapido fare un tap
nella home del
telefono o nel cassetto
delle app.
Sicure
Le PWA devono per forza essere servite via
HTTPS per prevenire lo snooping e per garantire
che il contenuto non sia stato manomesso.
Alla fine siamo markettari
Pensa a questa cosa…
Alla fine siamo markettari
Con una PWA installata è come se facessi una
impression gratuita nei telefoni dei tuoi lettori
ad ogni apertura del cassetto delle app.
Quante volte guardi il telefono in un giorno?
Quante volte scorri le app senza nulla di
particolare da fare? Vedere spesso l’icona del
tuo sito aiuta l’utente a ricordarsi di visitarlo.
Navigazione quasi istantanea
L’icona della PWA sarà
inserita nel telefono
insieme alle altre app.
Navigazione quasi istantanea
Nel momento in cui premi
il bottone aggiungi, la PWA
crea un pacchetto APK e lo
installa nel tuo telefono.
In questo pacchetto è
possibile inserire file per la
cache locale: pagine
HTML, file CSS e JS,
immagini.
Navigazione quasi istantanea
Quando lanci l’app nel tuo telefono non
verranno scaricati dalla rete i file che hai già in
cache. Eventuali update saranno eseguiti in
background.
Navigazione quasi istantanea
Si, hai capito bene.
Mettendo in cache i file critici, il caricamento
della pagina sarà praticamente istantaneo.
Enormi vantaggi sulla user experience.
Navigazione offline
Le PWA possono essere
indipendenti dalla connessione.
Navigazione offline
Inserendo nella cache del dispositivo le pagine
più importanti del sito e tutte le loro dipendenze
(CSS, JS, IMG, …), il sito web sarà navigabile
offline.
Fantastico.
Usabilità e UE/UX
Le PWA possono
essere impostate
per essere
visualizzate a tutto
lo schermo.
Usabilità e UE/UX
In tutti i browser mobile
appare in alto la barra degli
indirizzi.
Una PWA invece può essere
impostata per non mostrare
la barra ed occupare quindi
uno spazio visivo maggiore,
full-screen, più bella da
vedere e più comoda da
usare.
Tracciamento ed engagement
Tutte le pageviews provenienti da app installate
sono tracciabili in Google Analytics
Spoiler: l’engagement di questo canale è
decisamente buono bounce rate basso e
pages/session alto.
Tracciamento ed engagement
In un file di configurazione della PWA si deve
impostare l’URL di avvio, ovvero la pagina che
verrà aperta quando si lancia la Progressive Web
App.
Con URL Builder aggiungere il parametro UTM
/?utm_source=homescreen per tracciare tutto il
traffico PWA con Google Analytics.
Tracciamento ed engagement
Re-engagement
La PWA rende facile il re-engagement attraverso
funzionalità come le notifiche push.
Le notifiche push si appoggiano al Service
Worker, file già necessario per le PWA.
Re-engagement
Leggerezza
Una PWA occupa molto meno spazio di una app
nativa e non richiede permessi speciali.
Leggerezza – case history
Lancôme nel 2017 doveva decidere come
affrontare il mercato mobile.
La prima idea fu creare una app eCommerce per
vendere i propri prodotti.
Hanno capito, tuttavia, che una app del genere
ha senso solo per utenti affezionati, che usano
spesso il servizio.
Leggerezza
L’utente casuale non installa una app per fare
un singolo acquisto.
Cosa allora meglio di una PWA per essere meno
invasivi?
Personalizzabili
Barra degli indirizzi: è
possibile personalizzare il
colore della barra degli
indirizzi se si decide di non
nasconderla.
Personalizzabili
Personalizzabili
Splash screen: una volta
installata, l’app verrà
avviata con una schermata
personalizzabile con logo,
il nome completo e colore
di background.
Indipendenza dalle app native
La PWA può coesistere pacificamente
con l’app nativa.
Indipendenza dalle app native
Non tutti gli utenti installano volentieri app.
Se vengono richiesti permessi particolari il tasso
di installazione potrebbe risentirne.
Per non perdere utenti, affiancare una PWA
all’app nativa è un test sensato (vedi case history
Alibaba).
Ancora in dubbio?
Ora che ti ho elencato tutti questi vantaggi,
sei ancora indeciso se creare la tua prima PWA?
Sei pronto a cominciare?
Realizzare un'app progressiva di alta qualità
offre incredibili vantaggi, rendendo più facile
deliziare gli utenti, aumentare il
coinvolgimento e aumentare le conversioni.
Requisiti tecnici
https://medium.com/samsung-internet-dev/6-myths-of-progressive-web-apps-81e28ca9d2b1
Requisiti tecnici
Baseline PWA
– 6 requisiti fondamentali
Exemplary PWA
– Funzionalità avanzate
https://developers.google.com/web/progressive-web-apps/checklist
Baseline Progressive Web App
1. Il sito è servito su HTTPS
Baseline Progressive Web App
2. Pagine visibili offline
Baseline Progressive Web App
3. Primo caricamento rapido anche su reti 3G
Pagespeed Insights > 85
https://developers.google.com/speed/pagespeed/insights/?hl=it
WebPageTest < 4000
https://www.webpagetest.org/
Baseline Progressive Web App
4. Il sito funziona cross-browser
Chrome, Edge, Firefox, Opera & Safari
Baseline Progressive Web App
5. Transizioni di pagina veloci
Lazy load su immagini?
CSS critico inline?
Baseline Progressive Web App
6. Ogni pagina ha un URL specifico
Contenuti linkabili e condivisibili
That's it!
Requisiti obbligatori: ok
Requisiti facoltativi: vediamoli
Exemplary Progressive Web App
Una PWA "esemplare" cura in particolar modo:
• Indicizzabilità e social
• Esperienza utente
• Le notifiche push
• Prestazioni e tempi di caricamento
• Funzionalità di caching
• Caratteristiche aggiuntive
Exemplary Progressive Web App
Indicizzabilità e social
– Il contenuto del sito è indicizzato da Google
– Metadati Schema.org forniti quando appropriati
– Metadati Open Graph forniti quando appropriati
– URL canonici forniti quando necessario
– Le pagine utilizzano le History API (Javascript )
Exemplary Progressive Web App
Esperienza utente
– Il design del contenuto resta stabile durante il caricamento della
pagina
– Premendo indietro da una pagina di dettaglio si mantiene la
posizione di scorrimento sulla pagina di elenco precedente
– Quando selezionate, le aree di input di testo non vengono
coperte dalla tastiera sullo schermo
– Il contenuto è facilmente condivisibile dalla modalità stand-
alone o a schermo intero
– Il sito è responsivo su tutte le dimensioni dello schermo del
telefono, del tablet e del desktop
– Non richiedere eccessivamente di installare l’app
– La richiesta di aggiunta alla schermata home viene riconosciuta
dal browser
Exemplary Progressive Web App
Le notifiche push
– Fornire un contesto all’utente su come verranno
utilizzate
– L’interfaccia utente che incoraggia gli utenti ad attivare
le notifiche push non deve essere ripetitiva ed
invadente
– Il sito oscura lo schermo quando viene visualizzata la
richiesta di autorizzazione
– Le notifiche push devono essere tempestive, precise e
pertinenti
– Fornire controlli per abilitare e disabilitare le notifiche
Exemplary Progressive Web App
Prestazioni e tempi di caricamento
–Primo caricamento rapido anche su 3G
Exemplary Progressive Web App
Funzionalità di caching
–Il sito utilizza il sistema cache-first
–Il sito informa appropriatamente l’utente
quando è offline
https://developers.google.com/web/fundamentals/codelabs/your-first-pwapp/#beware_of_the_edge_cases
Exemplary Progressive Web App
Caratteristiche aggiuntive
–L’utente ha effettuato l’accesso su tutti i
dispositivi tramite Credential Management
API
–L’utente può pagare facilmente tramite
l’interfaccia utente nativa e Payment
Request API
È ora di scrivere codice
(oppure copiarlo)
Come creare una PWA
Il processo per creare una PWA è semplice.
Una volta rispettati i requisiti "Baseline PWA"
basta creare due file e caricarli via FTP nel tuo
sito:
• il file Manifest – "manifest.json"
• il file Service Worker – "sw.js"
Crea il file Manifest.json
Crea con un editor di
testo il file
manifest.json e
compilalo seguendo la
logica nell’esempio a
seguire.
Il file Manifest.json
{ "short_name": "EVE Milano",
"name": "EVE Milano Consulenza SEO",
"icons": [
{ "src": "/wp-content/uploads/apple-icons/apple-touch-icon-192x192.png",
"type":"image/png", "sizes":"192x192"}, {…}, {…}
],
"start_url": "/?utm_source=homescreen",
"display": "fullscreen",
"lang": "it-IT",
"background_color": "#fff",
"theme_color": "#5bb1f9",
"orientation": "portrait-primary"}
Cosa definisce il file Manifest.json
short_name: fornisce un
breve nome dell’app
leggibile dall’utente. È
destinato all'uso in cui lo
spazio non è sufficiente
per visualizzare il nome
completo della PWA.
{ "short_name": "EVE Milano",
"name": "EVE Milano Consulenza SEO",
"icons": [
{ "src": "/wp-content/uploads/apple-
icons/apple-touch-icon-192x192.png",
"type":"image/png", "sizes":"192x192"}
],
"start_url":
"/?utm_source=homescreen",
"display": "fullscreen",
"lang": "it-IT",
"background_color": "#fff",
"theme_color": "#5bb1f9",
"orientation": "portrait-primary"}
Cosa definisce il file Manifest.json
name: fornisce un nome
alla PWA leggibile
dall’utente, ad esempio
tra un elenco di altre
applicazioni o
un'etichetta per
un'icona.
{ "short_name": "EVE Milano",
"name": "EVE Milano Consulenza SEO",
"icons": [
{ "src": "/wp-content/uploads/apple-
icons/apple-touch-icon-192x192.png",
"type":"image/png", "sizes":"192x192"}
],
"start_url":
"/?utm_source=homescreen",
"display": "fullscreen",
"lang": "it-IT",
"background_color": "#fff",
"theme_color": "#5bb1f9",
"orientation": "portrait-primary"}
Cosa definisce il file Manifest.json
icons: definisce almeno
un'icona per la PWA.
Quando si aggiunge la
PWA alla home, il browser
cerca le icone che
corrispondono alla densità
del display. Se nessuna
icona corrispondente
viene trovata, il browser
cerca l’icona più adatta al
dispositivo.
{ "short_name": "EVE Milano",
"name": "EVE Milano Consulenza SEO",
"icons": [
{ "src": "/wp-content/uploads/apple-
icons/apple-touch-icon-48x48.png",
"type":"image/png", "sizes":"48x48"},
{ "src": "/wp-content/uploads/apple-
icons/apple-touch-icon-96x96.png",
"type":"image/png", "sizes":"96x96"},
{ "src": "/wp-content/uploads/apple-
icons/apple-touch-icon-192x192.png",
"type":"image/png", "sizes":"192x192"}
],
"start_url": "/?utm_source=homescreen",
"display": "fullscreen",
"lang": "it-IT",
"background_color": "#fff",
"theme_color": "#5bb1f9",
"orientation": "portrait-primary"}
Cosa definisce il file Manifest.json
start_url: specifica l'URL che
viene caricato quando un
utente avvia la PWA da un
dispositivo.
{ "short_name": "EVE Milano",
"name": "EVE Milano Consulenza SEO",
"icons": [
{ "src": "/wp-content/uploads/apple-
icons/apple-touch-icon-192x192.png",
"type":"image/png", "sizes":"192x192"}
],
"start_url":
"/?utm_source=homescreen",
"display": "fullscreen",
"lang": "it-IT",
"background_color": "#fff",
"theme_color": "#5bb1f9",
"orientation": "portrait-primary"}
Cosa definisce il file Manifest.json
display: definisce il layout
visivo della PWA. Le possibilità
sono:
• Standalone: l'applicazione
apparirà come
un'applicazione nativa. E'
possibile mantenere una
barra di stato.
• Fullscreen: ...
• Browser: …
{ "short_name": "EVE Milano",
"name": "EVE Milano Consulenza SEO",
"icons": [
{ "src": "/wp-content/uploads/apple-
icons/apple-touch-icon-192x192.png",
"type":"image/png", "sizes":"192x192"}
],
"start_url":
"/?utm_source=homescreen",
"display": "fullscreen",
"lang": "it-IT",
"background_color": "#fff",
"theme_color": "#5bb1f9",
"orientation": "portrait-primary"}
Cosa definisce il file Manifest.json
display: definisce il layout
visivo della PWA. Le possibilità
sono:
• Standalone: ...
• Fullscreen: viene utilizzata
tutta l'area di
visualizzazione disponibile.
Non viene mostrato alcun
elemento del browser.
• Browser: …
{ "short_name": "EVE Milano",
"name": "EVE Milano Consulenza SEO",
"icons": [
{ "src": "/wp-content/uploads/apple-
icons/apple-touch-icon-192x192.png",
"type":"image/png", "sizes":"192x192"}
],
"start_url":
"/?utm_source=homescreen",
"display": "fullscreen",
"lang": "it-IT",
"background_color": "#fff",
"theme_color": "#5bb1f9",
"orientation": "portrait-primary"}
Cosa definisce il file Manifest.json
display: definisce il layout
visivo della PWA. Le possibilità
sono:
• Standalone: …
• Fullscreen: …
• Browser: l'applicazione si
apre in una scheda del
browser convenzionale o in
una nuova finestra, a
seconda del browser e della
piattaforma. Questa è
l'impostazione predefinita.
{ "short_name": "EVE Milano",
"name": "EVE Milano Consulenza SEO",
"icons": [
{ "src": "/wp-content/uploads/apple-
icons/apple-touch-icon-192x192.png",
"type":"image/png", "sizes":"192x192"}
],
"start_url":
"/?utm_source=homescreen",
"display": "fullscreen",
"lang": "it-IT",
"background_color": "#fff",
"theme_color": "#5bb1f9",
"orientation": "portrait-primary"}
Cosa definisce il file Manifest.json
lang: specifica la
lingua principale
usata nella PWA.
Questo valore è una
stringa contenente
una singola tag di
lingua.
{ "short_name": "EVE Milano",
"name": "EVE Milano Consulenza SEO",
"icons": [
{ "src": "/wp-content/uploads/apple-
icons/apple-touch-icon-192x192.png",
"type":"image/png", "sizes":"192x192"}
],
"start_url":
"/?utm_source=homescreen",
"display": "fullscreen",
"lang": "it-IT",
"background_color": "#fff",
"theme_color": "#5bb1f9",
"orientation": "portrait-primary"}
Cosa definisce il file Manifest.json
background_color: definisce il
colore di sfondo previsto per
la PWA e lo splash screen.
Questo valore è usato dai
browser quando il manifest è
disponibile prima che il foglio
di stile sia stato caricato. Ciò
crea una transizione graduale
tra l'avvio dell'applicazione
Web e il caricamento del
contenuto dell'applicazione.
{ "short_name": "EVE Milano",
"name": "EVE Milano Consulenza SEO",
"icons": [
{ "src": "/wp-content/uploads/apple-
icons/apple-touch-icon-192x192.png",
"type":"image/png", "sizes":"192x192"}
],
"start_url":
"/?utm_source=homescreen",
"display": "fullscreen",
"lang": "it-IT",
"background_color": "#fff",
"theme_color": "#5bb1f9",
"orientation": "portrait-primary"}
Cosa definisce il file Manifest.json
theme_color: definisce il
colore predefinito del tema.
Il parametro influisce sul modo
in cui la PWA viene visualizzata
dal sistema operativo (ad
esempio in alcune versioni di
Android il colore del tema
circonda l'icona, o definisce il
colore della barra del browser,
…).
{ "short_name": "EVE Milano",
"name": "EVE Milano Consulenza SEO",
"icons": [
{ "src": "/wp-content/uploads/apple-
icons/apple-touch-icon-192x192.png",
"type":"image/png", "sizes":"192x192"}
],
"start_url":
"/?utm_source=homescreen",
"display": "fullscreen",
"lang": "it-IT",
"background_color": "#fff",
"theme_color": "#5bb1f9",
"orientation": "portrait-primary"}
Cosa definisce il file Manifest.json
orientation: imposta
l’orientamento della tua app in
verticale od orizzontale.
• any
• natural
• landscape
– landscape-primary
– landscape-secondary
• portrait
– portrait-primary
– portrait-secondary
{ "short_name": "EVE Milano",
"name": "EVE Milano Consulenza SEO",
"icons": [
{ "src": "/wp-content/uploads/apple-
icons/apple-touch-icon-192x192.png",
"type":"image/png", "sizes":"192x192"}
],
"start_url":
"/?utm_source=homescreen",
"display": "fullscreen",
"lang": "it-IT",
"background_color": "#fff",
"theme_color": "#5bb1f9",
"orientation": "portrait-primary"}
Carica e linka il file Manifest.json
Carica il tuo file manifest.json nella root del web
server.
Carica e linka il file Manifest.json
Ora non ti resta che inserire il richiamo al tuo file
manifest.json nell’head dell’HTML di tutte le
pagine del sito web:
<link rel="manifest" href="/manifest.json">
Testa il file Manifest.json
Per testare il file
manifest.json pulisci il
browser e apri una pagina
del tuo sito.
Avvia i Dev Tools di Chrome
e naviga nella tab
Application e poi clicca nel
menu di sinistra su
Manifest.
Verifica che a destra appaia
il link Add to homescreen e
le varie icone che hai
inserito.
Service Worker
Ora devi creare l’ultima dipendenza per la tua
PWA, la più importante: il Service Worker.
Qui avviene la magia
Il Service Worker è un file JavaScript che viene
eseguito separatamente dal thread del browser
principale:
Intercetta le richieste di rete
Memorizza file nella cache
Recupera risorse dalla cache
Consegna le notifiche push
Crea il file sw.js
Crea con un editor di testo il file sw.js e copia il
contenuto dell’esempio apportando le tue
opportune modifiche.
sw.js
self.addEventListener('install', e => {
console.log('PWA Service Worker installing.');
let timeStamp = Date.now();
e.waitUntil(caches.open('evemilano_service_worker').then(cache => {
return cache.addAll([
'/',
'/?utm_source=homescreen'
]).then(() => self.skipWaiting());
}))});
self.addEventListener('activate', event => {
console.log('PWA Service Worker activating.');
event.waitUntil(self.clients.claim());
});
self.addEventListener('fetch', event => {
event.respondWith(
caches.match(event.request).then(response => {
return response || fetch(event.request);
}));
});
sw.js
Un service worker passa attraverso tre fasi del
suo ciclo di vita:
1. Registrazione
2. Installazione
3. Attivazione
sw.js – registrazione
<script>
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('/s
w.js')
.then(function(registration) {
console.log('Registration
successful, scope is:',
registration.scope);
})
.catch(function(error) {
console.log('Service worker
registration failed, error:', error);
});
}
</script>
Questo script da inserire
nell'HEAD HTML richiama il file
sw.js con il comando
navigator.serviceWorker.register
solo se il browser supporta
questa funzione.
Successivamente stampa nella
console del browser il messaggio
di conferma o di errore della
registrazione del Service Worker
con il comando console.log().
sw.js – installazione e attivazione
Una volta che il service worker
è stato registrato si può
passare all'installazione ed
attivazione.
Install event listener: apre la
cache e la popola seguendo la
lista.
waitUntil serve per mantenere
attivo il servizio nel browser.
self.addEventListener('install', e => {
console.log('PWA Service Worker installing.');
let timeStamp = Date.now();
e.waitUntil(caches.open('evemilano_service_work
er').then(cache => {
return cache.addAll([
'/',
'/?utm_source=homescreen'
]).then(() => self.skipWaiting());
}))});
self.addEventListener('activate', event => {
console.log('PWA Service Worker activating.');
event.waitUntil(self.clients.claim());
});
self.addEventListener('fetch', event => {
event.respondWith(
caches.match(event.request).then(response => {
return response ||
fetch(event.request);
}));
});
sw.js – installazione e attivazione
Activate event
listener: attiva il
servizio di caching.
event.waitUntil(self.cli
ents.claim()): prende il
controllo della cache e
la fornisce prima di
cercarla dalla rete.
self.addEventListener('install', e => {
console.log('PWA Service Worker installing.');
let timeStamp = Date.now();
e.waitUntil(caches.open('evemilano_service_work
er').then(cache => {
return cache.addAll([
'/',
'/?utm_source=homescreen'
]).then(() => self.skipWaiting());
}))});
self.addEventListener('activate', event => {
console.log('PWA Service Worker activating.');
event.waitUntil(self.clients.claim());
});
self.addEventListener('fetch', event => {
event.respondWith(
caches.match(event.request).then(response => {
return response ||
fetch(event.request);
}));
});
sw.js – installazione e attivazione
Fetch event listener: il
SW intercetta le
richieste e decide se
fornire la cache o la
risorsa dalla rete.
self.addEventListener('install', e => {
console.log('PWA Service Worker installing.');
let timeStamp = Date.now();
e.waitUntil(caches.open('evemilano_service_work
er').then(cache => {
return cache.addAll([
'/',
'/?utm_source=homescreen'
]).then(() => self.skipWaiting());
}))});
self.addEventListener('activate', event => {
console.log('PWA Service Worker activating.');
event.waitUntil(self.clients.claim());
});
self.addEventListener('fetch', event => {
event.respondWith(
caches.match(event.request).then(response => {
return response ||
fetch(event.request);
}));
});
sw.js – installazione e attivazione
networkOnly – ottieni solo via network.
cacheOnly – ottieni solo via cache.
fastest – ottieni da entrambi, rispondi con la
prima che arriva.
networkFirst – ottieni dal network, se fallisce
ottieni dalla cache.
cacheFirst – ottieni dalla cache ma anche dal
network e aggiorna la cache se necessario.
https://serviceworke.rs/caching-strategies.html
sw.js – installazione e attivazione
Limiti dimensione cache:
Chrome e Opera: variabile.
Firefox non ha limiti, chiede se > 50 MB.
Mobile Safari 50 MB max.
Desktop Safari illimitato, chiede se > 5 MB.
IE10+ massimo 250 MB, chiede se > 10 MB.
sw.js – improve it!
Puoi sbizzarrirti inserendo diversi file in cache. I
file inseriti verranno usati dall’app sia per la
navigazione online sia per quella offline.
sw.js – improve it!
Inserendo tutti i file critici al rendering delle
pagine si alleggerisce drasticamente la necessità
di download per il browser.
Le pagine si caricheranno molto rapidamente.
sw.js – improve it!
HTML
CSS
JS (interni ed esterni)
Immagini
Font
evemilano.com/sw.js
sw.js – attenzione!
Attenzione: se anche un solo file di quelli
elencati nella lista cache non dovesse essere
raggiungibile (errore 404), l’installazione della
PWA fallirà e non verrà installato nessun file nel
telefono.
sw.js – attenzione!
Più è complessa la PWA e più è difficile fare
debugging. Non esagerare con i file in cache,
potresti rendere troppo complesso il processo di
manutenzione dell’app.
Testa la tua app con la Dev Console o Lighthouse
almeno una volta al mese, o almeno dopo aver
fatto modifiche importanti al sito web.
Per testare il Service Worker
Svuota la cache del browser
Apri il tuo sito e attiva i Dev Tools di Chrome.
Apri la tab Application e poi nel menu a sinistra
clicca Service Worker.
Verifica che il servizio sia installato e attivo
(pallino verde). Eventuali errori vengono
mostrati nella Console.
Per testare il Service Worker
Per testare la cache
Svuota la cache del browser e naviga sul tuo
sito.
Attiva i Dev Tools di Chrome e seleziona la tab
Application e poi nel menu a sinistra clicca su
Cache Storage ed infine sul tuo URL.
Se hai fatto tutto correttamente, nel riquadro a
destra dovresti vedere la lista con tutti i file che
hai inserito nella cache del Service Worker.
Per testare la cache
Web App Install Banners
Abbiamo tutto quelo
che serve.
Vediamo se appare il
Web App Install
Banner – il bottone per
aggiungere la PWA al
telefono.
Web App Install Banners
Chrome visualizza automaticamente il banner quando la tua
app soddisfa i seguenti criteri:
• Ha un Web App manifest con:
– uno short_name (utilizzato nella schermata principale)
– un name (usato nel banner)
– Icona/e png 192x192 (le dichiarazioni di icone devono includere
un tipo mime di image/png)
– Uno start_url di avvio
• Ha un service worker registrato.
• È servita su HTTPS (un requisito per l'utilizzo del service
worker).
• Meets a site engagement heuristic defined by Chrome
(this is regularly being changed).
Come testare la tua PWA
Da poco è stato rilasciato una estensione per
Chrome per testare le PWA e non solo.
Si chiama Lighthouse, ti consiglio di dargli un
occhio.
https://developers.google.com/web/
Come testare la tua PWA
Come testare la tua PWA
Come testare la tua PWA
Strumento open-source per verificare qualità e
la correttezza delle tue PWA.
Lighthouse esegue una serie di test sulla pagina
e genera un rapporto. Puoi utilizzare i test falliti
come suggerimento di cosa migliorare nella tua
app.
Come testare la tua PWA
Next step?
Notifiche push
Pulsante «Salva per dopo»
La tecnologia delle PWA è in continua
evoluzione
Case history - Trivago
Trivago ha comunicato i dati di usabilità
del sito dopo aver creato la loro PWA:
• Engagement: +150%
• Repeat visits for users: da 0,8 a 2
• Il 67% degli utenti che hanno perso
connessione durante la navigazione
sono poi tornati
https://goo.gl/y5tLTN
Case history - Twitter
Twitter ha sviluppato la sua PWA:
Twitter Lite.
Vai sul sito Twitter con lo
smartphone. Se non appare il
bottone, con il menu in alto usa la
funzione “Add to home screen”.
Usa Twitter con le agevolazioni delle
PWA.
Case history - Twitter
Risultati:
• 65% aumento pagine per sessione.
• 75% aumento dei Tweets inviati.
• 20% riduzione del bounce rate.
• 70% riduzione della banda utilizzata nella
normale navigazione. Da considerare inoltre
il saving sul download dell’app che pesa 23.5
MB contro l’installazione della PWA che
pesa soltanto 600 K.
https://developers.google.com/web/showcase
/2017/twitter
Case history - TWC
The Weather Channel nel 2016 ha implementato
la tecnologia PWA in 62 lingue e 178 paesi.
Il risultato è stato un miglioramento dell’80%
sui tempi di caricamento delle pagine.
https://developers.google.com/web/showcase/
2016/weather-channel
Case history - Lancôme
Lancôme ha deciso di trasformare il suo sito web
mobile in una PWA e ha registrato:
incremento delle prestazioni dell’84%
incremento del 17% delle conversioni
incremento dell’8% chiusura carrelli abbandonati
grazie alle notifiche push.
https://developers.google.com/web/showcase/201
7/lancome
iOS?
Dove studiare
• Installable Web Apps with the Web App Manifest in Chrome for Android
– https://developers.google.com/web/updates/2014/11/Support-for-installable-web-apps-
with-webapp-manifest-in-chrome-38-for-Android
• Your First Progressive Web App
– https://developers.google.com/web/fundamentals/codelabs/your-first-pwapp/
• Web App Install Banners
– https://developers.google.com/web/fundamentals/app-install-banners/
• The Web App Manifest
– https://developers.google.com/web/fundamentals/web-app-manifest/
• Introduction to Service Worker
– https://developers.google.com/web/ilt/pwa/introduction-to-service-worker
• Adding a Service Worker and Offline into your Web App
– https://developers.google.com/web/fundamentals/codelabs/offline/
• Web App Manifest
– https://developer.mozilla.org/en-US/docs/Web/Manifest
• Progressive Web Apps with Service Workers
– https://blog.booking.com/progressive-web-apps-with-service-workers.html
Conclusioni
Ho concluso.
Grazie
Giovanni Sacheli
Consulente SEO
Partner @ searcus.ch
Blogger @ evemilano.com

More Related Content

What's hot

Come strutturare un design semplice ed efficace per WordPress
Come strutturare un design semplice ed efficace per WordPressCome strutturare un design semplice ed efficace per WordPress
Come strutturare un design semplice ed efficace per WordPressSiteGround.com
 
Lezione8 seo-confartigianato
Lezione8 seo-confartigianatoLezione8 seo-confartigianato
Lezione8 seo-confartigianatoAndrea Vaccarella
 
SEMrush WebStudy Marathon - SEO Tecnico - CMS in ottica SEO per i contenuti
SEMrush WebStudy Marathon - SEO Tecnico - CMS in ottica SEO per i contenutiSEMrush WebStudy Marathon - SEO Tecnico - CMS in ottica SEO per i contenuti
SEMrush WebStudy Marathon - SEO Tecnico - CMS in ottica SEO per i contenutisemrush_webinars
 
Elementor: esploriamo le possibilità del page builder più scaricato al mondo
Elementor: esploriamo le possibilità del page builder più scaricato al mondoElementor: esploriamo le possibilità del page builder più scaricato al mondo
Elementor: esploriamo le possibilità del page builder più scaricato al mondoSiteGround.com
 
Lezione6 video e file m-confartigianato
Lezione6 video e file m-confartigianatoLezione6 video e file m-confartigianato
Lezione6 video e file m-confartigianatoAndrea Vaccarella
 
Come creare una strategia SEO efficace?
Come creare una strategia SEO efficace?Come creare una strategia SEO efficace?
Come creare una strategia SEO efficace?Ninja Academy
 
Ottimizzare WordPress non solo per i motori di ricerca
Ottimizzare WordPress non solo per i motori di ricercaOttimizzare WordPress non solo per i motori di ricerca
Ottimizzare WordPress non solo per i motori di ricercaTiziano Fogliata
 
Come sfruttare al meglio i contenuti del tuo e commerce
Come sfruttare al meglio i contenuti del tuo e commerceCome sfruttare al meglio i contenuti del tuo e commerce
Come sfruttare al meglio i contenuti del tuo e commerceFilippo Sogus
 
Introduzione alla SEO tecnica e analisi SEO del sito
Introduzione alla SEO tecnica e analisi SEO del sitoIntroduzione alla SEO tecnica e analisi SEO del sito
Introduzione alla SEO tecnica e analisi SEO del sitosemrush_webinars
 
Lezione5 Usability-confartigianato
Lezione5 Usability-confartigianatoLezione5 Usability-confartigianato
Lezione5 Usability-confartigianatoAndrea Vaccarella
 
Affiliate marketing la libertà a portata di click! siteground
Affiliate marketing  la libertà a portata di click!   sitegroundAffiliate marketing  la libertà a portata di click!   siteground
Affiliate marketing la libertà a portata di click! sitegroundSiteGround.com
 
PWA e Hybrid App VS Native
PWA e Hybrid App VS NativePWA e Hybrid App VS Native
PWA e Hybrid App VS NativeAlberto Abruzzo
 
Guide per WordPress: come scrivere, editare e pubblicare articoli
Guide per WordPress: come scrivere, editare e pubblicare articoliGuide per WordPress: come scrivere, editare e pubblicare articoli
Guide per WordPress: come scrivere, editare e pubblicare articoliSalvatore Capolupo
 
21 SEO actions per il lancio di un nuovo sito
21 SEO actions per il lancio di un nuovo sito21 SEO actions per il lancio di un nuovo sito
21 SEO actions per il lancio di un nuovo sitoMarketing Freaks
 
Idee Eccezionali Relative A Wordpress È Necessario
Idee Eccezionali Relative A Wordpress È NecessarioIdee Eccezionali Relative A Wordpress È Necessario
Idee Eccezionali Relative A Wordpress È Necessariojumbledboyfrien39
 
Black-hat link building vs White-hat link earning - Matteo Monari
Black-hat link building vs White-hat link earning - Matteo MonariBlack-hat link building vs White-hat link earning - Matteo Monari
Black-hat link building vs White-hat link earning - Matteo MonariBizup
 

What's hot (20)

Come strutturare un design semplice ed efficace per WordPress
Come strutturare un design semplice ed efficace per WordPressCome strutturare un design semplice ed efficace per WordPress
Come strutturare un design semplice ed efficace per WordPress
 
Lezione8 seo-confartigianato
Lezione8 seo-confartigianatoLezione8 seo-confartigianato
Lezione8 seo-confartigianato
 
SEMrush WebStudy Marathon - SEO Tecnico - CMS in ottica SEO per i contenuti
SEMrush WebStudy Marathon - SEO Tecnico - CMS in ottica SEO per i contenutiSEMrush WebStudy Marathon - SEO Tecnico - CMS in ottica SEO per i contenuti
SEMrush WebStudy Marathon - SEO Tecnico - CMS in ottica SEO per i contenuti
 
Elementor: esploriamo le possibilità del page builder più scaricato al mondo
Elementor: esploriamo le possibilità del page builder più scaricato al mondoElementor: esploriamo le possibilità del page builder più scaricato al mondo
Elementor: esploriamo le possibilità del page builder più scaricato al mondo
 
Grasso
GrassoGrasso
Grasso
 
Lezione6 video e file m-confartigianato
Lezione6 video e file m-confartigianatoLezione6 video e file m-confartigianato
Lezione6 video e file m-confartigianato
 
Come creare una strategia SEO efficace?
Come creare una strategia SEO efficace?Come creare una strategia SEO efficace?
Come creare una strategia SEO efficace?
 
Ottimizzare WordPress non solo per i motori di ricerca
Ottimizzare WordPress non solo per i motori di ricercaOttimizzare WordPress non solo per i motori di ricerca
Ottimizzare WordPress non solo per i motori di ricerca
 
Come sfruttare al meglio i contenuti del tuo e commerce
Come sfruttare al meglio i contenuti del tuo e commerceCome sfruttare al meglio i contenuti del tuo e commerce
Come sfruttare al meglio i contenuti del tuo e commerce
 
Introduzione alla SEO tecnica e analisi SEO del sito
Introduzione alla SEO tecnica e analisi SEO del sitoIntroduzione alla SEO tecnica e analisi SEO del sito
Introduzione alla SEO tecnica e analisi SEO del sito
 
Lezione5 Usability-confartigianato
Lezione5 Usability-confartigianatoLezione5 Usability-confartigianato
Lezione5 Usability-confartigianato
 
Affiliate marketing la libertà a portata di click! siteground
Affiliate marketing  la libertà a portata di click!   sitegroundAffiliate marketing  la libertà a portata di click!   siteground
Affiliate marketing la libertà a portata di click! siteground
 
PWA e Hybrid App VS Native
PWA e Hybrid App VS NativePWA e Hybrid App VS Native
PWA e Hybrid App VS Native
 
Guide per WordPress: come scrivere, editare e pubblicare articoli
Guide per WordPress: come scrivere, editare e pubblicare articoliGuide per WordPress: come scrivere, editare e pubblicare articoli
Guide per WordPress: come scrivere, editare e pubblicare articoli
 
21 SEO actions per il lancio di un nuovo sito
21 SEO actions per il lancio di un nuovo sito21 SEO actions per il lancio di un nuovo sito
21 SEO actions per il lancio di un nuovo sito
 
Idee Eccezionali Relative A Wordpress È Necessario
Idee Eccezionali Relative A Wordpress È NecessarioIdee Eccezionali Relative A Wordpress È Necessario
Idee Eccezionali Relative A Wordpress È Necessario
 
Black-hat link building vs White-hat link earning - Matteo Monari
Black-hat link building vs White-hat link earning - Matteo MonariBlack-hat link building vs White-hat link earning - Matteo Monari
Black-hat link building vs White-hat link earning - Matteo Monari
 
Corso seo 3
Corso seo 3Corso seo 3
Corso seo 3
 
Workshop Seo Basic
Workshop Seo BasicWorkshop Seo Basic
Workshop Seo Basic
 
Salvo
SalvoSalvo
Salvo
 

Similar to Come creare una PWA Progressive Web App @ Inbound Strategies 2018

Progressive Web Apps
Progressive Web AppsProgressive Web Apps
Progressive Web AppsLuca Fortin
 
Strategie per applicazioni web prima o meglio dell'app nativa
Strategie per applicazioni web prima o meglio dell'app nativaStrategie per applicazioni web prima o meglio dell'app nativa
Strategie per applicazioni web prima o meglio dell'app nativaDiego La Monica
 
Web Domus Italia - Guida ai servizi
Web Domus Italia - Guida ai servizi Web Domus Italia - Guida ai servizi
Web Domus Italia - Guida ai servizi Web Domus
 
ForumPA - App no grazie, lunga vita a Responsive Design
ForumPA - App no grazie, lunga vita a Responsive DesignForumPA - App no grazie, lunga vita a Responsive Design
ForumPA - App no grazie, lunga vita a Responsive DesignFabrizio Caccavello
 
B com 2014 | Mobile App o Mobile Web? Qual è la soluzione migliore per il tuo...
B com 2014 | Mobile App o Mobile Web? Qual è la soluzione migliore per il tuo...B com 2014 | Mobile App o Mobile Web? Qual è la soluzione migliore per il tuo...
B com 2014 | Mobile App o Mobile Web? Qual è la soluzione migliore per il tuo...B com Expo | GL events Italia
 
Mobile App o Mobile Web? Quale scelta per il mio business?
Mobile App o Mobile Web? Quale scelta per il mio business?Mobile App o Mobile Web? Quale scelta per il mio business?
Mobile App o Mobile Web? Quale scelta per il mio business?Francesco Ronchi
 
Mobile Usability
Mobile UsabilityMobile Usability
Mobile UsabilityKEA s.r.l.
 
Essere o non essere Responsive by massimo.milone
Essere o non essere Responsive by massimo.miloneEssere o non essere Responsive by massimo.milone
Essere o non essere Responsive by massimo.miloneMassimo Milone
 
Social media ca’ foscari 2016
Social media ca’ foscari 2016Social media ca’ foscari 2016
Social media ca’ foscari 2016marcomurador
 
L'Importanza di un Sito Mobile Friendly nella Seo
L'Importanza di un Sito Mobile Friendly nella SeoL'Importanza di un Sito Mobile Friendly nella Seo
L'Importanza di un Sito Mobile Friendly nella SeoWeorizon
 
Responsive web design RT
Responsive web design RTResponsive web design RT
Responsive web design RTJservice
 
2011-2014: cosa è cambiato sul Web per le aziende
2011-2014: cosa è cambiato sul Web per le aziende2011-2014: cosa è cambiato sul Web per le aziende
2011-2014: cosa è cambiato sul Web per le aziendeGabriele Romanato
 

Similar to Come creare una PWA Progressive Web App @ Inbound Strategies 2018 (20)

Pwa presentation
Pwa presentationPwa presentation
Pwa presentation
 
PWA PRESENTATION
PWA PRESENTATIONPWA PRESENTATION
PWA PRESENTATION
 
Progressive Web Apps
Progressive Web AppsProgressive Web Apps
Progressive Web Apps
 
Creare PWA con Angular
Creare PWA con AngularCreare PWA con Angular
Creare PWA con Angular
 
Strategie per applicazioni web prima o meglio dell'app nativa
Strategie per applicazioni web prima o meglio dell'app nativaStrategie per applicazioni web prima o meglio dell'app nativa
Strategie per applicazioni web prima o meglio dell'app nativa
 
Web Domus Italia - Guida ai servizi
Web Domus Italia - Guida ai servizi Web Domus Italia - Guida ai servizi
Web Domus Italia - Guida ai servizi
 
ForumPA - App no grazie, lunga vita a Responsive Design
ForumPA - App no grazie, lunga vita a Responsive DesignForumPA - App no grazie, lunga vita a Responsive Design
ForumPA - App no grazie, lunga vita a Responsive Design
 
App, sito mobile o entrambi ?
App, sito mobile o entrambi ?App, sito mobile o entrambi ?
App, sito mobile o entrambi ?
 
Mobile application
Mobile applicationMobile application
Mobile application
 
B com 2014 | Mobile App o Mobile Web? Qual è la soluzione migliore per il tuo...
B com 2014 | Mobile App o Mobile Web? Qual è la soluzione migliore per il tuo...B com 2014 | Mobile App o Mobile Web? Qual è la soluzione migliore per il tuo...
B com 2014 | Mobile App o Mobile Web? Qual è la soluzione migliore per il tuo...
 
Mobile App o Mobile Web? Quale scelta per il mio business?
Mobile App o Mobile Web? Quale scelta per il mio business?Mobile App o Mobile Web? Quale scelta per il mio business?
Mobile App o Mobile Web? Quale scelta per il mio business?
 
Acadevmy - PWA & Angular
Acadevmy - PWA & AngularAcadevmy - PWA & Angular
Acadevmy - PWA & Angular
 
Mobile Usability
Mobile UsabilityMobile Usability
Mobile Usability
 
Flash vs jQuery
Flash vs jQueryFlash vs jQuery
Flash vs jQuery
 
Essere o non essere Responsive by massimo.milone
Essere o non essere Responsive by massimo.miloneEssere o non essere Responsive by massimo.milone
Essere o non essere Responsive by massimo.milone
 
Mobile servizi in punta di dita
Mobile servizi in punta di ditaMobile servizi in punta di dita
Mobile servizi in punta di dita
 
Social media ca’ foscari 2016
Social media ca’ foscari 2016Social media ca’ foscari 2016
Social media ca’ foscari 2016
 
L'Importanza di un Sito Mobile Friendly nella Seo
L'Importanza di un Sito Mobile Friendly nella SeoL'Importanza di un Sito Mobile Friendly nella Seo
L'Importanza di un Sito Mobile Friendly nella Seo
 
Responsive web design RT
Responsive web design RTResponsive web design RT
Responsive web design RT
 
2011-2014: cosa è cambiato sul Web per le aziende
2011-2014: cosa è cambiato sul Web per le aziende2011-2014: cosa è cambiato sul Web per le aziende
2011-2014: cosa è cambiato sul Web per le aziende
 

More from Giovanni Sacheli

202211 SMXL Sacheli: PageRank, cos'è e come funzionava
202211 SMXL Sacheli: PageRank, cos'è e come funzionava202211 SMXL Sacheli: PageRank, cos'è e come funzionava
202211 SMXL Sacheli: PageRank, cos'è e come funzionavaGiovanni Sacheli
 
Chrome DevTools: le basi tecniche per comprendere meglio la SEO
Chrome DevTools: le basi tecniche per comprendere meglio la SEOChrome DevTools: le basi tecniche per comprendere meglio la SEO
Chrome DevTools: le basi tecniche per comprendere meglio la SEOGiovanni Sacheli
 
Tracciare le azioni sul sito con Google Analytics e Tag Manager - Web Marketi...
Tracciare le azioni sul sito con Google Analytics e Tag Manager - Web Marketi...Tracciare le azioni sul sito con Google Analytics e Tag Manager - Web Marketi...
Tracciare le azioni sul sito con Google Analytics e Tag Manager - Web Marketi...Giovanni Sacheli
 
Come eseguire un'analisi dei competitor online - Giovanni Sacheli Seriousmonk...
Come eseguire un'analisi dei competitor online - Giovanni Sacheli Seriousmonk...Come eseguire un'analisi dei competitor online - Giovanni Sacheli Seriousmonk...
Come eseguire un'analisi dei competitor online - Giovanni Sacheli Seriousmonk...Giovanni Sacheli
 
Technical SEO Audit Checklist - Giovanni Sacheli Search Marketing Connect 2018
Technical SEO Audit Checklist - Giovanni Sacheli Search Marketing Connect 2018Technical SEO Audit Checklist - Giovanni Sacheli Search Marketing Connect 2018
Technical SEO Audit Checklist - Giovanni Sacheli Search Marketing Connect 2018Giovanni Sacheli
 
SEO ON SITE, CONTROLLARE INDICIZZAZIONE E DIRETTIVE PER GLI SPIDER - Giovanni...
SEO ON SITE, CONTROLLARE INDICIZZAZIONE E DIRETTIVE PER GLI SPIDER - Giovanni...SEO ON SITE, CONTROLLARE INDICIZZAZIONE E DIRETTIVE PER GLI SPIDER - Giovanni...
SEO ON SITE, CONTROLLARE INDICIZZAZIONE E DIRETTIVE PER GLI SPIDER - Giovanni...Giovanni Sacheli
 
SEMrush webinar - Piano migrazione
SEMrush webinar - Piano migrazioneSEMrush webinar - Piano migrazione
SEMrush webinar - Piano migrazioneGiovanni Sacheli
 
Come trovare nuovi clienti con Facebook
Come trovare nuovi clienti con FacebookCome trovare nuovi clienti con Facebook
Come trovare nuovi clienti con FacebookGiovanni Sacheli
 
Come scrivere un contenuto che piace a Google
Come scrivere un contenuto che piace a GoogleCome scrivere un contenuto che piace a Google
Come scrivere un contenuto che piace a GoogleGiovanni Sacheli
 
Analisi dei competitor con Screaming Frog
Analisi dei competitor con Screaming FrogAnalisi dei competitor con Screaming Frog
Analisi dei competitor con Screaming FrogGiovanni Sacheli
 
Come analizzare il log del web server
Come analizzare il log del web serverCome analizzare il log del web server
Come analizzare il log del web serverGiovanni Sacheli
 
Come fare SEO con AngularJS
Come fare SEO con AngularJSCome fare SEO con AngularJS
Come fare SEO con AngularJSGiovanni Sacheli
 
Analisi SEO con Screaming Frog e Google Search Console
Analisi SEO con Screaming Frog e Google Search ConsoleAnalisi SEO con Screaming Frog e Google Search Console
Analisi SEO con Screaming Frog e Google Search ConsoleGiovanni Sacheli
 
Scansioni avanzate con Screaming Frog - Advanced SEO Tools 2016
Scansioni avanzate con Screaming Frog - Advanced SEO Tools 2016Scansioni avanzate con Screaming Frog - Advanced SEO Tools 2016
Scansioni avanzate con Screaming Frog - Advanced SEO Tools 2016Giovanni Sacheli
 
Slide corso SEO Copy Marzo 2017
Slide corso SEO Copy Marzo 2017Slide corso SEO Copy Marzo 2017
Slide corso SEO Copy Marzo 2017Giovanni Sacheli
 
Slide corso SEO Copy Novembre 2015
Slide corso SEO Copy Novembre 2015Slide corso SEO Copy Novembre 2015
Slide corso SEO Copy Novembre 2015Giovanni Sacheli
 
Deep Linking delle immagini
Deep Linking delle immaginiDeep Linking delle immagini
Deep Linking delle immaginiGiovanni Sacheli
 
Slide Corso SEO Copywriting Milano 10-2014
Slide Corso SEO Copywriting Milano 10-2014Slide Corso SEO Copywriting Milano 10-2014
Slide Corso SEO Copywriting Milano 10-2014Giovanni Sacheli
 

More from Giovanni Sacheli (20)

202211 SMXL Sacheli: PageRank, cos'è e come funzionava
202211 SMXL Sacheli: PageRank, cos'è e come funzionava202211 SMXL Sacheli: PageRank, cos'è e come funzionava
202211 SMXL Sacheli: PageRank, cos'è e come funzionava
 
Chrome DevTools: le basi tecniche per comprendere meglio la SEO
Chrome DevTools: le basi tecniche per comprendere meglio la SEOChrome DevTools: le basi tecniche per comprendere meglio la SEO
Chrome DevTools: le basi tecniche per comprendere meglio la SEO
 
Tracciare le azioni sul sito con Google Analytics e Tag Manager - Web Marketi...
Tracciare le azioni sul sito con Google Analytics e Tag Manager - Web Marketi...Tracciare le azioni sul sito con Google Analytics e Tag Manager - Web Marketi...
Tracciare le azioni sul sito con Google Analytics e Tag Manager - Web Marketi...
 
Come eseguire un'analisi dei competitor online - Giovanni Sacheli Seriousmonk...
Come eseguire un'analisi dei competitor online - Giovanni Sacheli Seriousmonk...Come eseguire un'analisi dei competitor online - Giovanni Sacheli Seriousmonk...
Come eseguire un'analisi dei competitor online - Giovanni Sacheli Seriousmonk...
 
Technical SEO Audit Checklist - Giovanni Sacheli Search Marketing Connect 2018
Technical SEO Audit Checklist - Giovanni Sacheli Search Marketing Connect 2018Technical SEO Audit Checklist - Giovanni Sacheli Search Marketing Connect 2018
Technical SEO Audit Checklist - Giovanni Sacheli Search Marketing Connect 2018
 
SEO ON SITE, CONTROLLARE INDICIZZAZIONE E DIRETTIVE PER GLI SPIDER - Giovanni...
SEO ON SITE, CONTROLLARE INDICIZZAZIONE E DIRETTIVE PER GLI SPIDER - Giovanni...SEO ON SITE, CONTROLLARE INDICIZZAZIONE E DIRETTIVE PER GLI SPIDER - Giovanni...
SEO ON SITE, CONTROLLARE INDICIZZAZIONE E DIRETTIVE PER GLI SPIDER - Giovanni...
 
SEMrush webinar - Piano migrazione
SEMrush webinar - Piano migrazioneSEMrush webinar - Piano migrazione
SEMrush webinar - Piano migrazione
 
Come trovare nuovi clienti con Facebook
Come trovare nuovi clienti con FacebookCome trovare nuovi clienti con Facebook
Come trovare nuovi clienti con Facebook
 
Come scrivere un contenuto che piace a Google
Come scrivere un contenuto che piace a GoogleCome scrivere un contenuto che piace a Google
Come scrivere un contenuto che piace a Google
 
Analisi dei competitor con Screaming Frog
Analisi dei competitor con Screaming FrogAnalisi dei competitor con Screaming Frog
Analisi dei competitor con Screaming Frog
 
Come analizzare il log del web server
Come analizzare il log del web serverCome analizzare il log del web server
Come analizzare il log del web server
 
Come fare SEO con AngularJS
Come fare SEO con AngularJSCome fare SEO con AngularJS
Come fare SEO con AngularJS
 
Analisi SEO con Screaming Frog e Google Search Console
Analisi SEO con Screaming Frog e Google Search ConsoleAnalisi SEO con Screaming Frog e Google Search Console
Analisi SEO con Screaming Frog e Google Search Console
 
Scansioni avanzate con Screaming Frog - Advanced SEO Tools 2016
Scansioni avanzate con Screaming Frog - Advanced SEO Tools 2016Scansioni avanzate con Screaming Frog - Advanced SEO Tools 2016
Scansioni avanzate con Screaming Frog - Advanced SEO Tools 2016
 
Slide corso SEO Copy Marzo 2017
Slide corso SEO Copy Marzo 2017Slide corso SEO Copy Marzo 2017
Slide corso SEO Copy Marzo 2017
 
Slide corso SEO Copy Novembre 2015
Slide corso SEO Copy Novembre 2015Slide corso SEO Copy Novembre 2015
Slide corso SEO Copy Novembre 2015
 
Deep Linking delle immagini
Deep Linking delle immaginiDeep Linking delle immagini
Deep Linking delle immagini
 
Seo Audit Demo
Seo Audit DemoSeo Audit Demo
Seo Audit Demo
 
Seo e prestashop
Seo e prestashopSeo e prestashop
Seo e prestashop
 
Slide Corso SEO Copywriting Milano 10-2014
Slide Corso SEO Copywriting Milano 10-2014Slide Corso SEO Copywriting Milano 10-2014
Slide Corso SEO Copywriting Milano 10-2014
 

Come creare una PWA Progressive Web App @ Inbound Strategies 2018

  • 1. Giovanni Sacheli Consulente SEO Partner @ searcus.ch Blogger @ evemilano.com
  • 2. PWA – Progressive Web Apps Rendi il tuo sito una App per Android in 10 minuti #inbound18
  • 3. Cosa sono le PWA PWA = Progressive Web Apps
  • 4. Cosa sono le PWA Tecnologia coniata da Google: "A new way to deliver amazing user experiences on the web."
  • 5. Cosa sono le PWA Tecnologia che aggiunge specifiche funzionalità ad un sito web.
  • 6. Cosa sono le PWA … is all about User Experience
  • 7. Cosa sono le PWA … is all about a FAST User Experience!
  • 8. Cosa sono le PWA Le PWA sono siti web che si possono installare in smartphone Android in un modo simile alle app native.
  • 9. Cosa sono le PWA La PWA combinano il meglio del web e la migliore delle app.
  • 10. Cosa sono le PWA Questa tecnologia permette di installare nel telefono un sito web, o parte di esso, per poter essere fruito con particolari vantaggi in termini di usabilità.
  • 11. Cosa sono le PWA Come si installa? Navigando da mobile siti web con funzionalità PWA viene chiesto all'utente di aggiungere il sito nel telefono.
  • 12. Web App Install Banners Link
  • 13. Video
  • 14. Le obiezioni dello scettico Perché dovrei installare un’app identica al sito web?
  • 15. Ti dirò che… Non è esattamente la stessa cosa… Ci sono diversi vantaggi a navigare il sito via PWA.
  • 16. Caratteristiche delle PWA Indicizzabili Progressive Responsive Accesso rapido Accesso sicuro Navigazione istantanea Navigazione offline Usabilità e UI Migliorano Engagement Re-engagement Leggerezza Personalizzabili Indipendenti da app native
  • 17. Indicizzabili Le PWA sono indicizzabili da Google e quindi possono posizionarsi e ricevere traffico organico come qualsiasi altro sito web.
  • 18. Indicizzabili Una PWA, come quella che ti presento in questa guida, non è altro che un sito web. Come tale, è scansionabile dai motori di ricerca, è indicizzabile, si può posizionare ed ottenere traffico organico, PPC, social, diretto, referral, …
  • 19. Indicizzabili Far indicizzare un’app nativa invece è tutt’altra cosa.
  • 20. Progressive Cross browser. Le PWA funzionano per ogni utente, indipendentemente dalla scelta del browser.
  • 21. Progressive – non solo Google
  • 22. Responsive Cross device. Le PWA si adattano a qualsiasi display: desktop, cellulare, tablet. What’s next?
  • 23. Accesso rapido L’icona dell’app sarà inserita nel telefono insieme alle altre app. Basta un tap per avviare il sito.
  • 24. Accesso rapido Rispetto ad aprire il browser del telefono e digitare l’URL o cercarlo nei preferiti, è sicuramente più rapido fare un tap nella home del telefono o nel cassetto delle app.
  • 25. Sicure Le PWA devono per forza essere servite via HTTPS per prevenire lo snooping e per garantire che il contenuto non sia stato manomesso.
  • 26. Alla fine siamo markettari Pensa a questa cosa…
  • 27. Alla fine siamo markettari Con una PWA installata è come se facessi una impression gratuita nei telefoni dei tuoi lettori ad ogni apertura del cassetto delle app. Quante volte guardi il telefono in un giorno? Quante volte scorri le app senza nulla di particolare da fare? Vedere spesso l’icona del tuo sito aiuta l’utente a ricordarsi di visitarlo.
  • 28. Navigazione quasi istantanea L’icona della PWA sarà inserita nel telefono insieme alle altre app.
  • 29. Navigazione quasi istantanea Nel momento in cui premi il bottone aggiungi, la PWA crea un pacchetto APK e lo installa nel tuo telefono. In questo pacchetto è possibile inserire file per la cache locale: pagine HTML, file CSS e JS, immagini.
  • 30. Navigazione quasi istantanea Quando lanci l’app nel tuo telefono non verranno scaricati dalla rete i file che hai già in cache. Eventuali update saranno eseguiti in background.
  • 31. Navigazione quasi istantanea Si, hai capito bene. Mettendo in cache i file critici, il caricamento della pagina sarà praticamente istantaneo. Enormi vantaggi sulla user experience.
  • 32. Navigazione offline Le PWA possono essere indipendenti dalla connessione.
  • 33. Navigazione offline Inserendo nella cache del dispositivo le pagine più importanti del sito e tutte le loro dipendenze (CSS, JS, IMG, …), il sito web sarà navigabile offline. Fantastico.
  • 34. Usabilità e UE/UX Le PWA possono essere impostate per essere visualizzate a tutto lo schermo.
  • 35. Usabilità e UE/UX In tutti i browser mobile appare in alto la barra degli indirizzi. Una PWA invece può essere impostata per non mostrare la barra ed occupare quindi uno spazio visivo maggiore, full-screen, più bella da vedere e più comoda da usare.
  • 36. Tracciamento ed engagement Tutte le pageviews provenienti da app installate sono tracciabili in Google Analytics Spoiler: l’engagement di questo canale è decisamente buono bounce rate basso e pages/session alto.
  • 37. Tracciamento ed engagement In un file di configurazione della PWA si deve impostare l’URL di avvio, ovvero la pagina che verrà aperta quando si lancia la Progressive Web App. Con URL Builder aggiungere il parametro UTM /?utm_source=homescreen per tracciare tutto il traffico PWA con Google Analytics.
  • 39. Re-engagement La PWA rende facile il re-engagement attraverso funzionalità come le notifiche push. Le notifiche push si appoggiano al Service Worker, file già necessario per le PWA.
  • 41. Leggerezza Una PWA occupa molto meno spazio di una app nativa e non richiede permessi speciali.
  • 42. Leggerezza – case history Lancôme nel 2017 doveva decidere come affrontare il mercato mobile. La prima idea fu creare una app eCommerce per vendere i propri prodotti. Hanno capito, tuttavia, che una app del genere ha senso solo per utenti affezionati, che usano spesso il servizio.
  • 43. Leggerezza L’utente casuale non installa una app per fare un singolo acquisto. Cosa allora meglio di una PWA per essere meno invasivi?
  • 44. Personalizzabili Barra degli indirizzi: è possibile personalizzare il colore della barra degli indirizzi se si decide di non nasconderla.
  • 46. Personalizzabili Splash screen: una volta installata, l’app verrà avviata con una schermata personalizzabile con logo, il nome completo e colore di background.
  • 47. Indipendenza dalle app native La PWA può coesistere pacificamente con l’app nativa.
  • 48. Indipendenza dalle app native Non tutti gli utenti installano volentieri app. Se vengono richiesti permessi particolari il tasso di installazione potrebbe risentirne. Per non perdere utenti, affiancare una PWA all’app nativa è un test sensato (vedi case history Alibaba).
  • 49. Ancora in dubbio? Ora che ti ho elencato tutti questi vantaggi, sei ancora indeciso se creare la tua prima PWA?
  • 50. Sei pronto a cominciare? Realizzare un'app progressiva di alta qualità offre incredibili vantaggi, rendendo più facile deliziare gli utenti, aumentare il coinvolgimento e aumentare le conversioni.
  • 52. Requisiti tecnici Baseline PWA – 6 requisiti fondamentali Exemplary PWA – Funzionalità avanzate https://developers.google.com/web/progressive-web-apps/checklist
  • 53. Baseline Progressive Web App 1. Il sito è servito su HTTPS
  • 54. Baseline Progressive Web App 2. Pagine visibili offline
  • 55. Baseline Progressive Web App 3. Primo caricamento rapido anche su reti 3G Pagespeed Insights > 85 https://developers.google.com/speed/pagespeed/insights/?hl=it WebPageTest < 4000 https://www.webpagetest.org/
  • 56. Baseline Progressive Web App 4. Il sito funziona cross-browser Chrome, Edge, Firefox, Opera & Safari
  • 57. Baseline Progressive Web App 5. Transizioni di pagina veloci Lazy load su immagini? CSS critico inline?
  • 58. Baseline Progressive Web App 6. Ogni pagina ha un URL specifico Contenuti linkabili e condivisibili
  • 59. That's it! Requisiti obbligatori: ok Requisiti facoltativi: vediamoli
  • 60. Exemplary Progressive Web App Una PWA "esemplare" cura in particolar modo: • Indicizzabilità e social • Esperienza utente • Le notifiche push • Prestazioni e tempi di caricamento • Funzionalità di caching • Caratteristiche aggiuntive
  • 61. Exemplary Progressive Web App Indicizzabilità e social – Il contenuto del sito è indicizzato da Google – Metadati Schema.org forniti quando appropriati – Metadati Open Graph forniti quando appropriati – URL canonici forniti quando necessario – Le pagine utilizzano le History API (Javascript )
  • 62. Exemplary Progressive Web App Esperienza utente – Il design del contenuto resta stabile durante il caricamento della pagina – Premendo indietro da una pagina di dettaglio si mantiene la posizione di scorrimento sulla pagina di elenco precedente – Quando selezionate, le aree di input di testo non vengono coperte dalla tastiera sullo schermo – Il contenuto è facilmente condivisibile dalla modalità stand- alone o a schermo intero – Il sito è responsivo su tutte le dimensioni dello schermo del telefono, del tablet e del desktop – Non richiedere eccessivamente di installare l’app – La richiesta di aggiunta alla schermata home viene riconosciuta dal browser
  • 63. Exemplary Progressive Web App Le notifiche push – Fornire un contesto all’utente su come verranno utilizzate – L’interfaccia utente che incoraggia gli utenti ad attivare le notifiche push non deve essere ripetitiva ed invadente – Il sito oscura lo schermo quando viene visualizzata la richiesta di autorizzazione – Le notifiche push devono essere tempestive, precise e pertinenti – Fornire controlli per abilitare e disabilitare le notifiche
  • 64. Exemplary Progressive Web App Prestazioni e tempi di caricamento –Primo caricamento rapido anche su 3G
  • 65. Exemplary Progressive Web App Funzionalità di caching –Il sito utilizza il sistema cache-first –Il sito informa appropriatamente l’utente quando è offline https://developers.google.com/web/fundamentals/codelabs/your-first-pwapp/#beware_of_the_edge_cases
  • 66. Exemplary Progressive Web App Caratteristiche aggiuntive –L’utente ha effettuato l’accesso su tutti i dispositivi tramite Credential Management API –L’utente può pagare facilmente tramite l’interfaccia utente nativa e Payment Request API
  • 67. È ora di scrivere codice (oppure copiarlo)
  • 68. Come creare una PWA Il processo per creare una PWA è semplice. Una volta rispettati i requisiti "Baseline PWA" basta creare due file e caricarli via FTP nel tuo sito: • il file Manifest – "manifest.json" • il file Service Worker – "sw.js"
  • 69. Crea il file Manifest.json Crea con un editor di testo il file manifest.json e compilalo seguendo la logica nell’esempio a seguire.
  • 70. Il file Manifest.json { "short_name": "EVE Milano", "name": "EVE Milano Consulenza SEO", "icons": [ { "src": "/wp-content/uploads/apple-icons/apple-touch-icon-192x192.png", "type":"image/png", "sizes":"192x192"}, {…}, {…} ], "start_url": "/?utm_source=homescreen", "display": "fullscreen", "lang": "it-IT", "background_color": "#fff", "theme_color": "#5bb1f9", "orientation": "portrait-primary"}
  • 71. Cosa definisce il file Manifest.json short_name: fornisce un breve nome dell’app leggibile dall’utente. È destinato all'uso in cui lo spazio non è sufficiente per visualizzare il nome completo della PWA. { "short_name": "EVE Milano", "name": "EVE Milano Consulenza SEO", "icons": [ { "src": "/wp-content/uploads/apple- icons/apple-touch-icon-192x192.png", "type":"image/png", "sizes":"192x192"} ], "start_url": "/?utm_source=homescreen", "display": "fullscreen", "lang": "it-IT", "background_color": "#fff", "theme_color": "#5bb1f9", "orientation": "portrait-primary"}
  • 72. Cosa definisce il file Manifest.json name: fornisce un nome alla PWA leggibile dall’utente, ad esempio tra un elenco di altre applicazioni o un'etichetta per un'icona. { "short_name": "EVE Milano", "name": "EVE Milano Consulenza SEO", "icons": [ { "src": "/wp-content/uploads/apple- icons/apple-touch-icon-192x192.png", "type":"image/png", "sizes":"192x192"} ], "start_url": "/?utm_source=homescreen", "display": "fullscreen", "lang": "it-IT", "background_color": "#fff", "theme_color": "#5bb1f9", "orientation": "portrait-primary"}
  • 73. Cosa definisce il file Manifest.json icons: definisce almeno un'icona per la PWA. Quando si aggiunge la PWA alla home, il browser cerca le icone che corrispondono alla densità del display. Se nessuna icona corrispondente viene trovata, il browser cerca l’icona più adatta al dispositivo. { "short_name": "EVE Milano", "name": "EVE Milano Consulenza SEO", "icons": [ { "src": "/wp-content/uploads/apple- icons/apple-touch-icon-48x48.png", "type":"image/png", "sizes":"48x48"}, { "src": "/wp-content/uploads/apple- icons/apple-touch-icon-96x96.png", "type":"image/png", "sizes":"96x96"}, { "src": "/wp-content/uploads/apple- icons/apple-touch-icon-192x192.png", "type":"image/png", "sizes":"192x192"} ], "start_url": "/?utm_source=homescreen", "display": "fullscreen", "lang": "it-IT", "background_color": "#fff", "theme_color": "#5bb1f9", "orientation": "portrait-primary"}
  • 74. Cosa definisce il file Manifest.json start_url: specifica l'URL che viene caricato quando un utente avvia la PWA da un dispositivo. { "short_name": "EVE Milano", "name": "EVE Milano Consulenza SEO", "icons": [ { "src": "/wp-content/uploads/apple- icons/apple-touch-icon-192x192.png", "type":"image/png", "sizes":"192x192"} ], "start_url": "/?utm_source=homescreen", "display": "fullscreen", "lang": "it-IT", "background_color": "#fff", "theme_color": "#5bb1f9", "orientation": "portrait-primary"}
  • 75. Cosa definisce il file Manifest.json display: definisce il layout visivo della PWA. Le possibilità sono: • Standalone: l'applicazione apparirà come un'applicazione nativa. E' possibile mantenere una barra di stato. • Fullscreen: ... • Browser: … { "short_name": "EVE Milano", "name": "EVE Milano Consulenza SEO", "icons": [ { "src": "/wp-content/uploads/apple- icons/apple-touch-icon-192x192.png", "type":"image/png", "sizes":"192x192"} ], "start_url": "/?utm_source=homescreen", "display": "fullscreen", "lang": "it-IT", "background_color": "#fff", "theme_color": "#5bb1f9", "orientation": "portrait-primary"}
  • 76. Cosa definisce il file Manifest.json display: definisce il layout visivo della PWA. Le possibilità sono: • Standalone: ... • Fullscreen: viene utilizzata tutta l'area di visualizzazione disponibile. Non viene mostrato alcun elemento del browser. • Browser: … { "short_name": "EVE Milano", "name": "EVE Milano Consulenza SEO", "icons": [ { "src": "/wp-content/uploads/apple- icons/apple-touch-icon-192x192.png", "type":"image/png", "sizes":"192x192"} ], "start_url": "/?utm_source=homescreen", "display": "fullscreen", "lang": "it-IT", "background_color": "#fff", "theme_color": "#5bb1f9", "orientation": "portrait-primary"}
  • 77. Cosa definisce il file Manifest.json display: definisce il layout visivo della PWA. Le possibilità sono: • Standalone: … • Fullscreen: … • Browser: l'applicazione si apre in una scheda del browser convenzionale o in una nuova finestra, a seconda del browser e della piattaforma. Questa è l'impostazione predefinita. { "short_name": "EVE Milano", "name": "EVE Milano Consulenza SEO", "icons": [ { "src": "/wp-content/uploads/apple- icons/apple-touch-icon-192x192.png", "type":"image/png", "sizes":"192x192"} ], "start_url": "/?utm_source=homescreen", "display": "fullscreen", "lang": "it-IT", "background_color": "#fff", "theme_color": "#5bb1f9", "orientation": "portrait-primary"}
  • 78. Cosa definisce il file Manifest.json lang: specifica la lingua principale usata nella PWA. Questo valore è una stringa contenente una singola tag di lingua. { "short_name": "EVE Milano", "name": "EVE Milano Consulenza SEO", "icons": [ { "src": "/wp-content/uploads/apple- icons/apple-touch-icon-192x192.png", "type":"image/png", "sizes":"192x192"} ], "start_url": "/?utm_source=homescreen", "display": "fullscreen", "lang": "it-IT", "background_color": "#fff", "theme_color": "#5bb1f9", "orientation": "portrait-primary"}
  • 79. Cosa definisce il file Manifest.json background_color: definisce il colore di sfondo previsto per la PWA e lo splash screen. Questo valore è usato dai browser quando il manifest è disponibile prima che il foglio di stile sia stato caricato. Ciò crea una transizione graduale tra l'avvio dell'applicazione Web e il caricamento del contenuto dell'applicazione. { "short_name": "EVE Milano", "name": "EVE Milano Consulenza SEO", "icons": [ { "src": "/wp-content/uploads/apple- icons/apple-touch-icon-192x192.png", "type":"image/png", "sizes":"192x192"} ], "start_url": "/?utm_source=homescreen", "display": "fullscreen", "lang": "it-IT", "background_color": "#fff", "theme_color": "#5bb1f9", "orientation": "portrait-primary"}
  • 80. Cosa definisce il file Manifest.json theme_color: definisce il colore predefinito del tema. Il parametro influisce sul modo in cui la PWA viene visualizzata dal sistema operativo (ad esempio in alcune versioni di Android il colore del tema circonda l'icona, o definisce il colore della barra del browser, …). { "short_name": "EVE Milano", "name": "EVE Milano Consulenza SEO", "icons": [ { "src": "/wp-content/uploads/apple- icons/apple-touch-icon-192x192.png", "type":"image/png", "sizes":"192x192"} ], "start_url": "/?utm_source=homescreen", "display": "fullscreen", "lang": "it-IT", "background_color": "#fff", "theme_color": "#5bb1f9", "orientation": "portrait-primary"}
  • 81. Cosa definisce il file Manifest.json orientation: imposta l’orientamento della tua app in verticale od orizzontale. • any • natural • landscape – landscape-primary – landscape-secondary • portrait – portrait-primary – portrait-secondary { "short_name": "EVE Milano", "name": "EVE Milano Consulenza SEO", "icons": [ { "src": "/wp-content/uploads/apple- icons/apple-touch-icon-192x192.png", "type":"image/png", "sizes":"192x192"} ], "start_url": "/?utm_source=homescreen", "display": "fullscreen", "lang": "it-IT", "background_color": "#fff", "theme_color": "#5bb1f9", "orientation": "portrait-primary"}
  • 82. Carica e linka il file Manifest.json Carica il tuo file manifest.json nella root del web server.
  • 83. Carica e linka il file Manifest.json Ora non ti resta che inserire il richiamo al tuo file manifest.json nell’head dell’HTML di tutte le pagine del sito web: <link rel="manifest" href="/manifest.json">
  • 84. Testa il file Manifest.json Per testare il file manifest.json pulisci il browser e apri una pagina del tuo sito. Avvia i Dev Tools di Chrome e naviga nella tab Application e poi clicca nel menu di sinistra su Manifest. Verifica che a destra appaia il link Add to homescreen e le varie icone che hai inserito.
  • 85. Service Worker Ora devi creare l’ultima dipendenza per la tua PWA, la più importante: il Service Worker.
  • 86. Qui avviene la magia Il Service Worker è un file JavaScript che viene eseguito separatamente dal thread del browser principale: Intercetta le richieste di rete Memorizza file nella cache Recupera risorse dalla cache Consegna le notifiche push
  • 87. Crea il file sw.js Crea con un editor di testo il file sw.js e copia il contenuto dell’esempio apportando le tue opportune modifiche.
  • 88. sw.js self.addEventListener('install', e => { console.log('PWA Service Worker installing.'); let timeStamp = Date.now(); e.waitUntil(caches.open('evemilano_service_worker').then(cache => { return cache.addAll([ '/', '/?utm_source=homescreen' ]).then(() => self.skipWaiting()); }))}); self.addEventListener('activate', event => { console.log('PWA Service Worker activating.'); event.waitUntil(self.clients.claim()); }); self.addEventListener('fetch', event => { event.respondWith( caches.match(event.request).then(response => { return response || fetch(event.request); })); });
  • 89. sw.js Un service worker passa attraverso tre fasi del suo ciclo di vita: 1. Registrazione 2. Installazione 3. Attivazione
  • 90. sw.js – registrazione <script> if ('serviceWorker' in navigator) { navigator.serviceWorker.register('/s w.js') .then(function(registration) { console.log('Registration successful, scope is:', registration.scope); }) .catch(function(error) { console.log('Service worker registration failed, error:', error); }); } </script> Questo script da inserire nell'HEAD HTML richiama il file sw.js con il comando navigator.serviceWorker.register solo se il browser supporta questa funzione. Successivamente stampa nella console del browser il messaggio di conferma o di errore della registrazione del Service Worker con il comando console.log().
  • 91. sw.js – installazione e attivazione Una volta che il service worker è stato registrato si può passare all'installazione ed attivazione. Install event listener: apre la cache e la popola seguendo la lista. waitUntil serve per mantenere attivo il servizio nel browser. self.addEventListener('install', e => { console.log('PWA Service Worker installing.'); let timeStamp = Date.now(); e.waitUntil(caches.open('evemilano_service_work er').then(cache => { return cache.addAll([ '/', '/?utm_source=homescreen' ]).then(() => self.skipWaiting()); }))}); self.addEventListener('activate', event => { console.log('PWA Service Worker activating.'); event.waitUntil(self.clients.claim()); }); self.addEventListener('fetch', event => { event.respondWith( caches.match(event.request).then(response => { return response || fetch(event.request); })); });
  • 92. sw.js – installazione e attivazione Activate event listener: attiva il servizio di caching. event.waitUntil(self.cli ents.claim()): prende il controllo della cache e la fornisce prima di cercarla dalla rete. self.addEventListener('install', e => { console.log('PWA Service Worker installing.'); let timeStamp = Date.now(); e.waitUntil(caches.open('evemilano_service_work er').then(cache => { return cache.addAll([ '/', '/?utm_source=homescreen' ]).then(() => self.skipWaiting()); }))}); self.addEventListener('activate', event => { console.log('PWA Service Worker activating.'); event.waitUntil(self.clients.claim()); }); self.addEventListener('fetch', event => { event.respondWith( caches.match(event.request).then(response => { return response || fetch(event.request); })); });
  • 93. sw.js – installazione e attivazione Fetch event listener: il SW intercetta le richieste e decide se fornire la cache o la risorsa dalla rete. self.addEventListener('install', e => { console.log('PWA Service Worker installing.'); let timeStamp = Date.now(); e.waitUntil(caches.open('evemilano_service_work er').then(cache => { return cache.addAll([ '/', '/?utm_source=homescreen' ]).then(() => self.skipWaiting()); }))}); self.addEventListener('activate', event => { console.log('PWA Service Worker activating.'); event.waitUntil(self.clients.claim()); }); self.addEventListener('fetch', event => { event.respondWith( caches.match(event.request).then(response => { return response || fetch(event.request); })); });
  • 94. sw.js – installazione e attivazione networkOnly – ottieni solo via network. cacheOnly – ottieni solo via cache. fastest – ottieni da entrambi, rispondi con la prima che arriva. networkFirst – ottieni dal network, se fallisce ottieni dalla cache. cacheFirst – ottieni dalla cache ma anche dal network e aggiorna la cache se necessario. https://serviceworke.rs/caching-strategies.html
  • 95. sw.js – installazione e attivazione Limiti dimensione cache: Chrome e Opera: variabile. Firefox non ha limiti, chiede se > 50 MB. Mobile Safari 50 MB max. Desktop Safari illimitato, chiede se > 5 MB. IE10+ massimo 250 MB, chiede se > 10 MB.
  • 96. sw.js – improve it! Puoi sbizzarrirti inserendo diversi file in cache. I file inseriti verranno usati dall’app sia per la navigazione online sia per quella offline.
  • 97. sw.js – improve it! Inserendo tutti i file critici al rendering delle pagine si alleggerisce drasticamente la necessità di download per il browser. Le pagine si caricheranno molto rapidamente.
  • 98. sw.js – improve it! HTML CSS JS (interni ed esterni) Immagini Font evemilano.com/sw.js
  • 99. sw.js – attenzione! Attenzione: se anche un solo file di quelli elencati nella lista cache non dovesse essere raggiungibile (errore 404), l’installazione della PWA fallirà e non verrà installato nessun file nel telefono.
  • 100. sw.js – attenzione! Più è complessa la PWA e più è difficile fare debugging. Non esagerare con i file in cache, potresti rendere troppo complesso il processo di manutenzione dell’app. Testa la tua app con la Dev Console o Lighthouse almeno una volta al mese, o almeno dopo aver fatto modifiche importanti al sito web.
  • 101. Per testare il Service Worker Svuota la cache del browser Apri il tuo sito e attiva i Dev Tools di Chrome. Apri la tab Application e poi nel menu a sinistra clicca Service Worker. Verifica che il servizio sia installato e attivo (pallino verde). Eventuali errori vengono mostrati nella Console.
  • 102. Per testare il Service Worker
  • 103. Per testare la cache Svuota la cache del browser e naviga sul tuo sito. Attiva i Dev Tools di Chrome e seleziona la tab Application e poi nel menu a sinistra clicca su Cache Storage ed infine sul tuo URL. Se hai fatto tutto correttamente, nel riquadro a destra dovresti vedere la lista con tutti i file che hai inserito nella cache del Service Worker.
  • 104. Per testare la cache
  • 105. Web App Install Banners Abbiamo tutto quelo che serve. Vediamo se appare il Web App Install Banner – il bottone per aggiungere la PWA al telefono.
  • 106. Web App Install Banners Chrome visualizza automaticamente il banner quando la tua app soddisfa i seguenti criteri: • Ha un Web App manifest con: – uno short_name (utilizzato nella schermata principale) – un name (usato nel banner) – Icona/e png 192x192 (le dichiarazioni di icone devono includere un tipo mime di image/png) – Uno start_url di avvio • Ha un service worker registrato. • È servita su HTTPS (un requisito per l'utilizzo del service worker). • Meets a site engagement heuristic defined by Chrome (this is regularly being changed).
  • 107. Come testare la tua PWA Da poco è stato rilasciato una estensione per Chrome per testare le PWA e non solo. Si chiama Lighthouse, ti consiglio di dargli un occhio. https://developers.google.com/web/
  • 108. Come testare la tua PWA
  • 109. Come testare la tua PWA
  • 110. Come testare la tua PWA Strumento open-source per verificare qualità e la correttezza delle tue PWA. Lighthouse esegue una serie di test sulla pagina e genera un rapporto. Puoi utilizzare i test falliti come suggerimento di cosa migliorare nella tua app.
  • 111. Come testare la tua PWA
  • 112. Next step? Notifiche push Pulsante «Salva per dopo» La tecnologia delle PWA è in continua evoluzione
  • 113. Case history - Trivago Trivago ha comunicato i dati di usabilità del sito dopo aver creato la loro PWA: • Engagement: +150% • Repeat visits for users: da 0,8 a 2 • Il 67% degli utenti che hanno perso connessione durante la navigazione sono poi tornati https://goo.gl/y5tLTN
  • 114. Case history - Twitter Twitter ha sviluppato la sua PWA: Twitter Lite. Vai sul sito Twitter con lo smartphone. Se non appare il bottone, con il menu in alto usa la funzione “Add to home screen”. Usa Twitter con le agevolazioni delle PWA.
  • 115. Case history - Twitter Risultati: • 65% aumento pagine per sessione. • 75% aumento dei Tweets inviati. • 20% riduzione del bounce rate. • 70% riduzione della banda utilizzata nella normale navigazione. Da considerare inoltre il saving sul download dell’app che pesa 23.5 MB contro l’installazione della PWA che pesa soltanto 600 K. https://developers.google.com/web/showcase /2017/twitter
  • 116. Case history - TWC The Weather Channel nel 2016 ha implementato la tecnologia PWA in 62 lingue e 178 paesi. Il risultato è stato un miglioramento dell’80% sui tempi di caricamento delle pagine. https://developers.google.com/web/showcase/ 2016/weather-channel
  • 117. Case history - Lancôme Lancôme ha deciso di trasformare il suo sito web mobile in una PWA e ha registrato: incremento delle prestazioni dell’84% incremento del 17% delle conversioni incremento dell’8% chiusura carrelli abbandonati grazie alle notifiche push. https://developers.google.com/web/showcase/201 7/lancome
  • 118. iOS?
  • 119. Dove studiare • Installable Web Apps with the Web App Manifest in Chrome for Android – https://developers.google.com/web/updates/2014/11/Support-for-installable-web-apps- with-webapp-manifest-in-chrome-38-for-Android • Your First Progressive Web App – https://developers.google.com/web/fundamentals/codelabs/your-first-pwapp/ • Web App Install Banners – https://developers.google.com/web/fundamentals/app-install-banners/ • The Web App Manifest – https://developers.google.com/web/fundamentals/web-app-manifest/ • Introduction to Service Worker – https://developers.google.com/web/ilt/pwa/introduction-to-service-worker • Adding a Service Worker and Offline into your Web App – https://developers.google.com/web/fundamentals/codelabs/offline/ • Web App Manifest – https://developer.mozilla.org/en-US/docs/Web/Manifest • Progressive Web Apps with Service Workers – https://blog.booking.com/progressive-web-apps-with-service-workers.html
  • 121. Grazie
  • 122. Giovanni Sacheli Consulente SEO Partner @ searcus.ch Blogger @ evemilano.com

Editor's Notes

  1. Un intervento atipico dato che non parlo di SEO. Le PWA mi hanno appassionato, è poco più di un anno che ne seguo lo sviluppo. Già a novembre 2016 su EVE Milano avevo installato la prima versione della PWA su evemilano. Con questo intervento vorrei presentarvi le caratteristiche delle PWA e mostrarvi quanto sia semplice sfruttare le funzionalità base. Non voglio entrare nei dettagli tecnici anche se vi mostrerò un paio di script, dato che non sono uno sviluppatore e questo dimostra ancora di più quanto possa essere facile installare una PWA.
  2. O applicazioni web progressive per i rispettosi della lingua italiana
  3. Un nuovo modo per offrire esperienze utente entusiasmanti sul web. La tecnologia nasce da Google e poi è stata abbracciata da altri browser e oggi la compatibilità delle PWA è molto vasta.
  4. Le PWA sono una tecnologia che si aggiunge in parallelo ad un sito web, abilitando funzionalità particolari. Non sostituisce il sito web e non è indipendente come una app nativa. È come aggiungere optional alla propria auto.
  5. Quando si parla di pwa si parla di esperienza utente. Tutte le funzioni abilitate dalle pwa sono concentrate sull'offrire un'esperienza utente nuova
  6. Le pwa possono offrire un'esperienza utente più veloce, gratificante ed interattiva
  7. E da breve anche su smartphone apple, anche se in modo al momento limitato.
  8. Le pwa sono il punto di unione tra un sito web e una app nativa.
  9. Vediamo le caratteristiche tipiche di una pwa e quali di queste possono essere davvero un vantaggio in termini di esperienza utente rispetto a navigare il sito web via browser.
  10. Rispetto alla semplicità con cui si indicizza un sito web
  11. Compatibilità crescente: ora le pwa funzionano su chrome, opera e tutti i browser basati su Chromium, funzionano anche su firefox, samsung browser e safari - al momento parzialmente.
  12. Sono diversi gli attori in gioco su questa tecnologia
  13. Le pwa sono sicure. Un requisito fondamentale per abilitare le pwa è servire il contenuto via HTTPS
  14. Paghiamo Google per fare click ed impression
  15. Tempi di download delle dipendenze si riducono drasticamente a vantaggio della velocità di caricamento e transizione delle pagine
  16. gira
  17. La navigazione offline è una delle caratteristiche più interessanti delle pwa
  18. Oltre ad essere veloci danno priorità al contenuto
  19. Massima area visibile e visibilità verticale
  20. È possibile analizzare specificatamente il segmento di utenti che usa il sito via pwa
  21. Abilitare il tracciamento è molto semplice
  22. Questo permette di segmentare gli utenti e confrontare i kpi L'utente che usa la pwa è un utente affezionato
  23. Un canale di affezionati che è facile targettizzare. Facendo una PWA abbiamo già le basi per abilitare facilmente le notifiche push di terze parti
  24. Articoli del blog, quindi non massaggi acchiappaclick con offerte imperdibili. Il CTR è molto buono!
  25. È questo per un nerd è molto importante. Una pwa non è invasiva come potrebbe essere la sua alternativa nativa
  26. Occupa poco e non è invasiva
  27. Un'altra caratteristica delle pwa è la possibilità di customizzare alcuni elementi con i propri colori, come ad esempio la barra degli indirizzi
  28. Senza andare in contrasto o sovrascriversi
  29. Vista la propaganda di Google per un web più sicuro non poteva mancare questo requisito fondamentale.
  30. La pwa deve funzionare offline, magari non al 100% ma la pwa in aereo mode deve rispondere 200 quando viene lanciata. Quindi almeno l'url di avvio deve essere messo in cache
  31. Problema non si pone per i siti classici in HTML o PHP ma è importante per tutti i siti basati su framework in javascript. Il sito non può avere un URL unico con contenuti dinamici, perché precluderebbe una corretta scansione ed indicizzazione. Anche una app sviluppata in javascript deve basare le proprie pagine su url unicoci. Un framework in javascript dovrebbe usare le history api.
  32. I requisiti facoltativi si basano su best practice di usabilità
  33. Per far capire all'utente che le funzionalità del sito potrebbero essere limitate
  34. Caratteristiche avanzate che potrebbe sfruttare un ecommerce
  35. Appare sotto l'icona o quando non c'è spazio per un nome più lungo
  36. Nome lungo, appare nello spash screen o dove c'è spazio per il nome completo
  37. L'ultimo punto è il più vago, in pratica dipende dal livello di interazione che c'è tra utente e sito web. Una visita di ritorno è un buon motivo per abilitare il bottone, diverse pagine viste di fila è un altro buon motivo per attivare il bottone.
  38. Estensione di chrome Alcune funzioni sono comprese in chrome dev tool Io uso estensione
  39. Permette di eseguire 5 test sul sito web