SlideShare uma empresa Scribd logo
1 de 55
Stefan Horochovec
• Co-Founder e Chief Technology Officer
Kepha – Digital Business Experts
• Co-Founder e Arquiteto de Soluções
Previseme – HelpDesk
• Especialista em Engenharia de Software e Gestão de Projetos;
• Instrutor/Professor/Palestrante/Autor;
• Twitter: @horochovec
• Github: @horochovec
• Blogs: http://www.horochovec.com.br/
2016
2017
Cenário Mobile
Número de usuários (milhões)
0
500
1000
1500
2000
2500
2007 2008 2009 2010 2011 2012 2013 2014 2015
Mobile x Desktop
Mobile Desktop
Source: comScore Mobile Metrix, June 2015
Source: comScore Mobile Metrix, U.S., Age 18+, June 2015
Source: comScore Mobile Metrix, U.S., Age 18+, June 2015
de TODO tempo gasto em um smarphone é utilizando até 5 aplicativos
Progressive Web Apps
Aplicações via browser
• Cross-Platform x Cross-Browser;
• Deploy Facilitado;
• Atualização facilitada;
• Disponível para mecanismos de pesquisas (aka Google);
• Compartilhamento de Links de forma rápida;
• Possibilidade de Bookmarks – “Talvez”;
Cenário Atual – Aplicativos
• Descobrir que o aplicativo existe na Loja Virtual ou clicar em um link no rodapé
de um website que você já está navegando;
• Efetuar o download (2G, 3G, 4G, Wi-Fi, Lie-Fi, etc);
• Se cadastrar quando necessário;
• Visualizar praticamente a mesma coisa que você já estava visualizando....
• Compartilhar conteúdo via print-screen em redes sociais, ou integrações com
novos privilégios;
Cenário ”Esperado”
• Não ter a necessidade de instalar MAIS um aplicativo em seu device;
• Aplicações Web com maior responsividade;
• Segurança nas informações;
• Independência de conexão - Suporte off-line;
• Always updated;
• SEO-friendly;
• Compartilhamento de conteúdo (Links);
Grandes vantagens de Apps
• Ícone na Home-screen – “Talvez ?”;
• Splash Screen – Agregando valor a marca;
• Suporte off-line – “Nem sempre....”;
• Push Notification;
• Acesso ao hardware do dispositivo;
Como reverter as grandes
vantagens de uma aplicação
instalada via Loja Virtual?
Progressive Web Apps X Aplicações Nativas
• Permite instalação no device através de seu navegador;
• Funciona perfeitamente bem sem conexões ou com conexões lentas;
• Push Notifications;
• Splash Screens;
• Renderização em 60fps;
• Segurança garantida pois só funciona via httpS;
OK! Como eu faço isso?!?
Receita para uma Progressive Web App
• Application Shell;
• App Manifest;
• Service Workers;
• httpS;
App Manifest
• Arquivo de configuração escrito em JSON;
• Responsável por configurar:
• Nome do aplicativo na home;
• Iconografia;
• SplashScreen;
• Theme Color;
• Full Screen;
• Orientação da tela;
App Manifest
{
"name": "Nome do aplicativo",
"short_name": "Nome reduzido",
"icons": [{
”src": "images/icons/icon-128x128.png",
"sizes": "128x128",
"type": "image/png”
}],
"start_url": "/index.html",
"display": ”fullscreen",
"background_color": "#3E4EB8",
"theme_color": "#2F3BA2”
}
Service Workers
• Javascript que é executado em background no dispositivo móvel;
Registro Service Worker
<script>
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register(’service-worker.js’, {
scope: ’/’
})
.then(() => console.log('service worker instalado'))
.catch(err => console.log('Erro', err));
}
</script>
Event Listeners - install
this.addEventListener('install', function(event){
event.waitUntil(
caches
.open('tdc-first-cache')
.then(function(cache) {
return cache.addAll([
'./build/main.js',
'./build/main.css’
]);
})
.then(function() {
console.log('Service worker ativo, e cache pré-definido');
})
);
});
Event Listeners - activate
this.addEventListener('activate', function(event) {
console.log('[ServiceWorker] Activate');
event.waitUntil(
caches.keys().then(function(keyList) {
return Promise.all(keyList.map(function(key) {
if (key !== 'tdc-first-cache') {
console.log('[ServiceWorker] Removido', key);
return caches.delete(key);
}
}));
})
);
});
Event Listeners – fetch (Requisições HTTP)
this.addEventListener(’fetch', function(event){
event.respondWith(
caches.match(event.request).then(function(response) {
return response || fetch(event.request);
})
);
});
Notifications
if ('Notification' in window) {
Notification.requestPermission(function(result) {
console.log('Notification status: ', result)
});
if (Notification.permission == 'granted’) {
navigator.serviceWorker.getRegistration()
.then(function(registration) {
var message = {
body : 'Mensagem do corpo',
}
registration.showNotification('Teste', message);
});
}
}
Notifications
HTTPS
Confiável Integridade Privacidade
Progressive Web Apps
Experiência do usuário
Confiável Rápida Envolvente
Experiência do usuário
Confiável
Experiência do usuário
Rápida
53% dos usuários abandonam um site que
demora mais que 3 segundos para carregar
Experiência do usuário
Envolvente
• Ícone na home-screen;
• Full-screen;
• Themas;
• Orientação;
• Notificações;
Konga.com
stefan@kepha.com.br
Desmistificando Progressive Web Apps - PWA

Mais conteúdo relacionado

Mais procurados

Palestra / Efeitos Espetaculares Em Dhtml / SDD
Palestra / Efeitos Espetaculares Em Dhtml / SDDPalestra / Efeitos Espetaculares Em Dhtml / SDD
Palestra / Efeitos Espetaculares Em Dhtml / SDD
hugodiasneto
 
Palestra / SDD / Crossbrowsing
Palestra / SDD / CrossbrowsingPalestra / SDD / Crossbrowsing
Palestra / SDD / Crossbrowsing
hugodiasneto
 
Palestra / Layout Fluido Com Tableless / SDD
Palestra / Layout Fluido Com Tableless / SDDPalestra / Layout Fluido Com Tableless / SDD
Palestra / Layout Fluido Com Tableless / SDD
hugodiasneto
 

Mais procurados (20)

Como encarar o desenvolvimento front-end
Como encarar o desenvolvimento front-endComo encarar o desenvolvimento front-end
Como encarar o desenvolvimento front-end
 
WordCAmp RJ 2015 - A importância do Design/UX Para os desenvolvedores de Word...
WordCAmp RJ 2015 - A importância do Design/UX Para os desenvolvedores de Word...WordCAmp RJ 2015 - A importância do Design/UX Para os desenvolvedores de Word...
WordCAmp RJ 2015 - A importância do Design/UX Para os desenvolvedores de Word...
 
Bootstrap 4
Bootstrap 4Bootstrap 4
Bootstrap 4
 
Palestra / Efeitos Espetaculares Em Dhtml / SDD
Palestra / Efeitos Espetaculares Em Dhtml / SDDPalestra / Efeitos Espetaculares Em Dhtml / SDD
Palestra / Efeitos Espetaculares Em Dhtml / SDD
 
Introdução ao Web Design: Aula 2 - IHC/UX Design
Introdução ao Web Design: Aula 2 - IHC/UX DesignIntrodução ao Web Design: Aula 2 - IHC/UX Design
Introdução ao Web Design: Aula 2 - IHC/UX Design
 
Guga Alves apresenta Gutenberg fase 2 e 3
Guga Alves apresenta Gutenberg fase 2 e 3Guga Alves apresenta Gutenberg fase 2 e 3
Guga Alves apresenta Gutenberg fase 2 e 3
 
Palestra / SDD / Crossbrowsing
Palestra / SDD / CrossbrowsingPalestra / SDD / Crossbrowsing
Palestra / SDD / Crossbrowsing
 
Cache em aplicações web
Cache em aplicações webCache em aplicações web
Cache em aplicações web
 
Aplicações Web - um estudo sobre React
Aplicações Web - um estudo sobre ReactAplicações Web - um estudo sobre React
Aplicações Web - um estudo sobre React
 
Material Design - do smartphone ao desktop
Material Design - do smartphone ao desktopMaterial Design - do smartphone ao desktop
Material Design - do smartphone ao desktop
 
Workshop: WebSockets com HTML 5 & PHP - Gustavo Ciello
Workshop: WebSockets com HTML 5 & PHP - Gustavo CielloWorkshop: WebSockets com HTML 5 & PHP - Gustavo Ciello
Workshop: WebSockets com HTML 5 & PHP - Gustavo Ciello
 
Aplicando Testes Automatizados com Selenium e Azure DevOps - MVPConf LATAM 2019
Aplicando Testes Automatizados com Selenium e Azure DevOps - MVPConf LATAM 2019Aplicando Testes Automatizados com Selenium e Azure DevOps - MVPConf LATAM 2019
Aplicando Testes Automatizados com Selenium e Azure DevOps - MVPConf LATAM 2019
 
Palestra Netbeans 6 Campus Party
Palestra Netbeans 6 Campus PartyPalestra Netbeans 6 Campus Party
Palestra Netbeans 6 Campus Party
 
Desenvolvimento HTML5 para Smartphones e Tablets BlackBerry
Desenvolvimento HTML5 para Smartphones e Tablets BlackBerryDesenvolvimento HTML5 para Smartphones e Tablets BlackBerry
Desenvolvimento HTML5 para Smartphones e Tablets BlackBerry
 
Aula01
Aula01Aula01
Aula01
 
Web components
Web componentsWeb components
Web components
 
Por que devo aprender JavaScript?
Por que devo aprender JavaScript?Por que devo aprender JavaScript?
Por que devo aprender JavaScript?
 
Walker Leite apresenta usando o WordPress como backend de aplicação
Walker Leite apresenta usando o WordPress como backend de aplicaçãoWalker Leite apresenta usando o WordPress como backend de aplicação
Walker Leite apresenta usando o WordPress como backend de aplicação
 
Curso de css
Curso de cssCurso de css
Curso de css
 
Palestra / Layout Fluido Com Tableless / SDD
Palestra / Layout Fluido Com Tableless / SDDPalestra / Layout Fluido Com Tableless / SDD
Palestra / Layout Fluido Com Tableless / SDD
 

Semelhante a Desmistificando Progressive Web Apps - PWA

Novo Cinto de Utilidades do Desenvolvedor JavaScript, WebAPIs e Open Web
Novo Cinto de Utilidades do Desenvolvedor JavaScript, WebAPIs e Open WebNovo Cinto de Utilidades do Desenvolvedor JavaScript, WebAPIs e Open Web
Novo Cinto de Utilidades do Desenvolvedor JavaScript, WebAPIs e Open Web
Leonardo Balter
 
Construindo aplicações ricas com Silverlight
Construindo aplicações ricas com SilverlightConstruindo aplicações ricas com Silverlight
Construindo aplicações ricas com Silverlight
Felipe Pocchini
 
Desenvolvendo para Windows Phone
Desenvolvendo para Windows PhoneDesenvolvendo para Windows Phone
Desenvolvendo para Windows Phone
anybalrocha
 
Desenvolvendo para Windows Phone InfoTech 2013
Desenvolvendo para Windows Phone InfoTech 2013Desenvolvendo para Windows Phone InfoTech 2013
Desenvolvendo para Windows Phone InfoTech 2013
André Paulovich
 
Palestra urutai-mobile
Palestra urutai-mobilePalestra urutai-mobile
Palestra urutai-mobile
Rogerio Fontes
 
Apresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo SitesApresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo Sites
thiagolima
 
Introdução ao silverlight
Introdução ao silverlightIntrodução ao silverlight
Introdução ao silverlight
Felipe Pocchini
 

Semelhante a Desmistificando Progressive Web Apps - PWA (20)

O poder das Progressive Web Apps
O poder das Progressive Web AppsO poder das Progressive Web Apps
O poder das Progressive Web Apps
 
Jquery Mobile
Jquery MobileJquery Mobile
Jquery Mobile
 
8ºConnecting Knowledge Web ou App
8ºConnecting Knowledge Web ou App8ºConnecting Knowledge Web ou App
8ºConnecting Knowledge Web ou App
 
Web ou App?
Web ou App?Web ou App?
Web ou App?
 
Novo Cinto de Utilidades do Desenvolvedor JavaScript, WebAPIs e Open Web
Novo Cinto de Utilidades do Desenvolvedor JavaScript, WebAPIs e Open WebNovo Cinto de Utilidades do Desenvolvedor JavaScript, WebAPIs e Open Web
Novo Cinto de Utilidades do Desenvolvedor JavaScript, WebAPIs e Open Web
 
Desenvolvimento de Aplicativos Móveis Multiplataforma
Desenvolvimento de Aplicativos Móveis MultiplataformaDesenvolvimento de Aplicativos Móveis Multiplataforma
Desenvolvimento de Aplicativos Móveis Multiplataforma
 
Construindo aplicações ricas com Silverlight
Construindo aplicações ricas com SilverlightConstruindo aplicações ricas com Silverlight
Construindo aplicações ricas com Silverlight
 
Desenvolvendo para Windows Phone
Desenvolvendo para Windows PhoneDesenvolvendo para Windows Phone
Desenvolvendo para Windows Phone
 
Adobe Flex e Playbook
Adobe Flex e PlaybookAdobe Flex e Playbook
Adobe Flex e Playbook
 
Desenvolvendo para Windows Phone InfoTech 2013
Desenvolvendo para Windows Phone InfoTech 2013Desenvolvendo para Windows Phone InfoTech 2013
Desenvolvendo para Windows Phone InfoTech 2013
 
Plataforma Android
Plataforma AndroidPlataforma Android
Plataforma Android
 
Palestra urutai-mobile
Palestra urutai-mobilePalestra urutai-mobile
Palestra urutai-mobile
 
Progressive Web Apps - MeetUp MobileDevBH
Progressive Web Apps - MeetUp MobileDevBHProgressive Web Apps - MeetUp MobileDevBH
Progressive Web Apps - MeetUp MobileDevBH
 
Seminário de Desenvolvimento Mobile - Etec Cafelândia
Seminário de Desenvolvimento Mobile - Etec CafelândiaSeminário de Desenvolvimento Mobile - Etec Cafelândia
Seminário de Desenvolvimento Mobile - Etec Cafelândia
 
Apresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo SitesApresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo Sites
 
Desenvolvimento web - conceitos, tecnologia e tendências.
Desenvolvimento web - conceitos, tecnologia e tendências.Desenvolvimento web - conceitos, tecnologia e tendências.
Desenvolvimento web - conceitos, tecnologia e tendências.
 
Abordagens modernas no desenvolvimento web
Abordagens modernas no desenvolvimento webAbordagens modernas no desenvolvimento web
Abordagens modernas no desenvolvimento web
 
Sencha Touch, RhoMobile, AppMobi e jQuery Mobile um comparativo entre platafo...
Sencha Touch, RhoMobile, AppMobi e jQuery Mobile um comparativo entre platafo...Sencha Touch, RhoMobile, AppMobi e jQuery Mobile um comparativo entre platafo...
Sencha Touch, RhoMobile, AppMobi e jQuery Mobile um comparativo entre platafo...
 
App CrossMobile com C# para Android, Iphone e WindowsPhone
App CrossMobile com C# para Android, Iphone e WindowsPhoneApp CrossMobile com C# para Android, Iphone e WindowsPhone
App CrossMobile com C# para Android, Iphone e WindowsPhone
 
Introdução ao silverlight
Introdução ao silverlightIntrodução ao silverlight
Introdução ao silverlight
 

Mais de Stefan Horochovec

Flash plataform em dispositivos móveis
Flash plataform em dispositivos móveisFlash plataform em dispositivos móveis
Flash plataform em dispositivos móveis
Stefan Horochovec
 

Mais de Stefan Horochovec (12)

Lei Geral de Proteção de Dados - LGPD
Lei Geral de Proteção de Dados - LGPDLei Geral de Proteção de Dados - LGPD
Lei Geral de Proteção de Dados - LGPD
 
Arquitetura Serverless na AWS
Arquitetura Serverless na AWSArquitetura Serverless na AWS
Arquitetura Serverless na AWS
 
Android Study Jam - GDG Dois Vizinhos - Primeira Reunião
Android Study Jam - GDG Dois Vizinhos - Primeira ReuniãoAndroid Study Jam - GDG Dois Vizinhos - Primeira Reunião
Android Study Jam - GDG Dois Vizinhos - Primeira Reunião
 
Android Study Jams - GDG Dois Vizinhos
Android Study Jams - GDG Dois VizinhosAndroid Study Jams - GDG Dois Vizinhos
Android Study Jams - GDG Dois Vizinhos
 
Workshop - Ionic + firebase
Workshop - Ionic + firebaseWorkshop - Ionic + firebase
Workshop - Ionic + firebase
 
GDG Dois Vizinhos
GDG Dois VizinhosGDG Dois Vizinhos
GDG Dois Vizinhos
 
Primeiros passos - GIT
Primeiros passos - GITPrimeiros passos - GIT
Primeiros passos - GIT
 
Introdução ao AngularJS
Introdução ao AngularJSIntrodução ao AngularJS
Introdução ao AngularJS
 
Banco de dados orientado a objetos
Banco de dados orientado a objetosBanco de dados orientado a objetos
Banco de dados orientado a objetos
 
Gerenciamento de memoria
Gerenciamento de memoriaGerenciamento de memoria
Gerenciamento de memoria
 
Flash plataform em dispositivos móveis
Flash plataform em dispositivos móveisFlash plataform em dispositivos móveis
Flash plataform em dispositivos móveis
 
FlexMania 2010
FlexMania 2010FlexMania 2010
FlexMania 2010
 

Desmistificando Progressive Web Apps - PWA

  • 1.
  • 2. Stefan Horochovec • Co-Founder e Chief Technology Officer Kepha – Digital Business Experts • Co-Founder e Arquiteto de Soluções Previseme – HelpDesk • Especialista em Engenharia de Software e Gestão de Projetos; • Instrutor/Professor/Palestrante/Autor; • Twitter: @horochovec • Github: @horochovec • Blogs: http://www.horochovec.com.br/
  • 3.
  • 4.
  • 5.
  • 9. Número de usuários (milhões) 0 500 1000 1500 2000 2500 2007 2008 2009 2010 2011 2012 2013 2014 2015 Mobile x Desktop Mobile Desktop Source: comScore Mobile Metrix, June 2015
  • 10. Source: comScore Mobile Metrix, U.S., Age 18+, June 2015
  • 11. Source: comScore Mobile Metrix, U.S., Age 18+, June 2015
  • 12. de TODO tempo gasto em um smarphone é utilizando até 5 aplicativos
  • 14. Aplicações via browser • Cross-Platform x Cross-Browser; • Deploy Facilitado; • Atualização facilitada; • Disponível para mecanismos de pesquisas (aka Google); • Compartilhamento de Links de forma rápida; • Possibilidade de Bookmarks – “Talvez”;
  • 15. Cenário Atual – Aplicativos • Descobrir que o aplicativo existe na Loja Virtual ou clicar em um link no rodapé de um website que você já está navegando; • Efetuar o download (2G, 3G, 4G, Wi-Fi, Lie-Fi, etc); • Se cadastrar quando necessário; • Visualizar praticamente a mesma coisa que você já estava visualizando.... • Compartilhar conteúdo via print-screen em redes sociais, ou integrações com novos privilégios;
  • 16. Cenário ”Esperado” • Não ter a necessidade de instalar MAIS um aplicativo em seu device; • Aplicações Web com maior responsividade; • Segurança nas informações; • Independência de conexão - Suporte off-line; • Always updated; • SEO-friendly; • Compartilhamento de conteúdo (Links);
  • 17. Grandes vantagens de Apps • Ícone na Home-screen – “Talvez ?”; • Splash Screen – Agregando valor a marca; • Suporte off-line – “Nem sempre....”; • Push Notification; • Acesso ao hardware do dispositivo;
  • 18. Como reverter as grandes vantagens de uma aplicação instalada via Loja Virtual?
  • 19. Progressive Web Apps X Aplicações Nativas • Permite instalação no device através de seu navegador; • Funciona perfeitamente bem sem conexões ou com conexões lentas; • Push Notifications; • Splash Screens; • Renderização em 60fps; • Segurança garantida pois só funciona via httpS;
  • 20. OK! Como eu faço isso?!?
  • 21. Receita para uma Progressive Web App • Application Shell; • App Manifest; • Service Workers; • httpS;
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31. App Manifest • Arquivo de configuração escrito em JSON; • Responsável por configurar: • Nome do aplicativo na home; • Iconografia; • SplashScreen; • Theme Color; • Full Screen; • Orientação da tela;
  • 32. App Manifest { "name": "Nome do aplicativo", "short_name": "Nome reduzido", "icons": [{ ”src": "images/icons/icon-128x128.png", "sizes": "128x128", "type": "image/png” }], "start_url": "/index.html", "display": ”fullscreen", "background_color": "#3E4EB8", "theme_color": "#2F3BA2” }
  • 33. Service Workers • Javascript que é executado em background no dispositivo móvel;
  • 34. Registro Service Worker <script> if ('serviceWorker' in navigator) { navigator.serviceWorker.register(’service-worker.js’, { scope: ’/’ }) .then(() => console.log('service worker instalado')) .catch(err => console.log('Erro', err)); } </script>
  • 35. Event Listeners - install this.addEventListener('install', function(event){ event.waitUntil( caches .open('tdc-first-cache') .then(function(cache) { return cache.addAll([ './build/main.js', './build/main.css’ ]); }) .then(function() { console.log('Service worker ativo, e cache pré-definido'); }) ); });
  • 36. Event Listeners - activate this.addEventListener('activate', function(event) { console.log('[ServiceWorker] Activate'); event.waitUntil( caches.keys().then(function(keyList) { return Promise.all(keyList.map(function(key) { if (key !== 'tdc-first-cache') { console.log('[ServiceWorker] Removido', key); return caches.delete(key); } })); }) ); });
  • 37. Event Listeners – fetch (Requisições HTTP) this.addEventListener(’fetch', function(event){ event.respondWith( caches.match(event.request).then(function(response) { return response || fetch(event.request); }) ); });
  • 38. Notifications if ('Notification' in window) { Notification.requestPermission(function(result) { console.log('Notification status: ', result) }); if (Notification.permission == 'granted’) { navigator.serviceWorker.getRegistration() .then(function(registration) { var message = { body : 'Mensagem do corpo', } registration.showNotification('Teste', message); }); } }
  • 44. Experiência do usuário Rápida 53% dos usuários abandonam um site que demora mais que 3 segundos para carregar
  • 45. Experiência do usuário Envolvente • Ícone na home-screen; • Full-screen; • Themas; • Orientação; • Notificações;
  • 46.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.