Progressive Web Apps

72 visualizações

Publicada em

Apresentação sobre Progressive Web Apps no evento Code Talks que ocorre quinzenalmente entre os desenvolvedores da Fixcode Tecnologia

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
72
No SlideShare
0
A partir de incorporações
0
Número de incorporações
1
Ações
Compartilhamentos
0
Downloads
4
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide
  • => O que é uma PWA
    - Quando veio a especificação Notifications veio é que PWA ganhou mais atenção.
    - Porque?
    - apps podem ser um pouco mais limitada em muitos países, em alguns países apps são instaladas quando você compra o telefone e pronto em outros países você tem acesso à loja mas 3g é caro e wifi possui pouco acesso, então baixar e atualizar apps podem ser um desafio e tanto. Mesmo na América e Europa, os usuários baixam vários apps quando compram os telefones mas depois esse comportamento raramente continua acontecendo.
    - Quando usuários clicam em um link não tem que tomar decisões do tipo quando instalam um aplicativo.

    <meta name="apple-mobile-web-app-capable" content="yes">


  • => Desvantagens de apps nativas
    - A quantidade de apps que temos usadas tem sido cada vez menor, as pessoas estão deixando de baixar aplicativos, geralmente baixa quando compra o aparelho
    - o boom das apps passou, todo mundo lançou, tem app para cada ecommerce, cada serviço etc, web é a melhor opção de uso para esses usos mais pontuais
    - Faz sentido instalar um app apenas para pagar o ticket de estacionamento do shopping, ou mesmo instalar o app do restaurante que eu acabei de conhecer? De turismo relacionado a cidade que estou visitando? (Depois vou ter que me lembrar de deletar e a maioria das vezes não tem interação com SDK, a maioria só apresenta informações para o usuário)
    - Estudos mostram que usuários passa 80% do tempo usando app, mas não é nessas apps (Facebook, Mapa, Google, Email, Waze, Instagram). Metade do tempo que passa é no top 1, na maior parte do mundo é o Facebook.
    - Hoje tem um volta ao início, quando no primeiro iphone só era possível escrever uma app web, Jobs era contra desenvolver o SDK e queria que fosse tudo web. Quando publicaram as pessoas se acostumaram e acabou ficando no esquecimento.
    - O cara quer adicionar um ícone na home screen ou não (link descompromissado).
    - Qual opção temos hoje sem ter que instalar uma app? Alternativa é a web, acha um link ou faz uma busca, acha, abre a aba, usa, fecha e acabou, não exige um compromisso inicial gigantesco que é baixar uma app de 50MB, ocupar espaço, etc, o uso é pontual, descompromissado.
  • => Desvantagens de apps nativas
    - A quantidade de apps que temos usadas tem sido cada vez menor, as pessoas estão deixando de baixar aplicativos, geralmente baixa quando compra o aparelho
    - o boom das apps passou, todo mundo lançou, tem app para cada ecommerce, cada serviço etc, web é a melhor opção de uso para esses usos mais pontuais
    - Faz sentido instalar um app apenas para pagar o ticket de estacionamento do shopping, ou mesmo instalar o app do restaurante que eu acabei de conhecer? De turismo relacionado a cidade que estou visitando? (Depois vou ter que me lembrar de deletar e a maioria das vezes não tem interação com SDK, a maioria só apresenta informações para o usuário)
    - Estudos mostram que usuários passa 80% do tempo usando app, mas não é nessas apps (Facebook, Mapa, Google, Email, Waze, Instagram). Metade do tempo que passa é no top 1, na maior parte do mundo é o Facebook.
    - Hoje tem um volta ao início, quando no primeiro iphone só era possível escrever uma app web, Jobs era contra desenvolver o SDK e queria que fosse tudo web. Quando publicaram as pessoas se acostumaram e acabou ficando no esquecimento.
    - O cara quer adicionar um ícone na home screen ou não (link descompromissado).
    - Qual opção temos hoje sem ter que instalar uma app? Alternativa é a web, acha um link ou faz uma busca, acha, abre a aba, usa, fecha e acabou, não exige um compromisso inicial gigantesco que é baixar uma app de 50MB, ocupar espaço, etc, o uso é pontual, descompromissado.
  • => O que é uma PWA
    - Quando veio a especificação Notifications veio é que PWA ganhou mais atenção.
    - Porque?
    - apps podem ser um pouco mais limitada em muitos países, em alguns países apps são instaladas quando você compra o telefone e pronto em outros países você tem acesso à loja mas 3g é caro e wifi possui pouco acesso, então baixar e atualizar apps podem ser um desafio e tanto. Mesmo na América e Europa, os usuários baixam vários apps quando compram os telefones mas depois esse comportamento raramente continua acontecendo.
    - Quando usuários clicam em um link não tem que tomar decisões do tipo quando instalam um aplicativo.

    <meta name="apple-mobile-web-app-capable" content="yes">


  • => O que é uma PWA
    - Quando veio a especificação Notifications veio é que PWA ganhou mais atenção.
    - Porque?
    - apps podem ser um pouco mais limitada em muitos países, em alguns países apps são instaladas quando você compra o telefone e pronto em outros países você tem acesso à loja mas 3g é caro e wifi possui pouco acesso, então baixar e atualizar apps podem ser um desafio e tanto. Mesmo na América e Europa, os usuários baixam vários apps quando compram os telefones mas depois esse comportamento raramente continua acontecendo.
    - Quando usuários clicam em um link não tem que tomar decisões do tipo quando instalam um aplicativo.

    <meta name="apple-mobile-web-app-capable" content="yes">


  • => O que é uma PWA
    - Quando veio a especificação Notifications veio é que PWA ganhou mais atenção.
    - Porque?
    - apps podem ser um pouco mais limitada em muitos países, em alguns países apps são instaladas quando você compra o telefone e pronto em outros países você tem acesso à loja mas 3g é caro e wifi possui pouco acesso, então baixar e atualizar apps podem ser um desafio e tanto. Mesmo na América e Europa, os usuários baixam vários apps quando compram os telefones mas depois esse comportamento raramente continua acontecendo.
    - Quando usuários clicam em um link não tem que tomar decisões do tipo quando instalam um aplicativo.

    <meta name="apple-mobile-web-app-capable" content="yes">


  • => Apple não quer dançar a música que está tocando
    - Jobs foi o primeiro intusiasta mas quando descobriram o mercado enorme com App Store, criou-se uma resistência muito grande da evolução do safari no IOS porque para que isso avance eles vão ter que abrir mão do controle que eles possuem da loja, e historicamente são bem resistencia a esse tipo de mudança porque eles são bem restritivos com a loja e é complicado garantir o fluxo de dinheiro gerado pelos aplicativos. Lançaram o Apple Pay na web, mas nesse caso você teria que escolher usar e não obrigação.
    - Microsoft o grande problema de comprar é a falta de aplicativo, então pra eles é muito bom incentivar essa evolução, mas como o primeiro alvo dos desenvolvedores sempre é IOS, e eles desistem desse poder eles perdem a relevância desse modelo.
    - Google tem interesse em diminuir esse poder do concorrente, e como tem outras formas de monetizar, eles incentivam essa evolução e estão fazendo muita propaganda. Por mais que não façam dinheiro com android e apps, quando você usa android ele vem com todos os serviços deles instalados e o negócio principal do Google é, e sempre foi ads, ou seja, fazem dinheiro com você usando as ferramentas, eles querem que mais pessoas usem a web e serviços deles.
    - Suporte no Safari: O que foi anunciado em 2007, versão tataravó do webmanifest, é possível instalar na home screen com várias limitações, é proprietária da Apple, mas daria pra fazer uma solução com webmanifest e recursos mais novos em outros devices e uma versão com as metatags específicas da Apple para o IOS. Offline: a primeira especificação é a Application Cache API que surgiu muito tempo atrás na época dos primeiros iphones. Essa é uma especificação muito limitada, por isso surgiu uma especificação nova do services workers (que não tem no IOS). Mas poderia implementar no IOS com Application Cache API e Service Workers nos navegadores recentes, ou então no IOS não funcionar offline. Idem para push notifications.
    - E a busca? Nas stores é fácil ir lá e buscar uma app pelo nome, na web é mais orgânico: via google, links compartilhados em redes sociais etc. É mais fácil divulgar um link do que. Acesse a store, busque por x, baixe, instale, abra...
    - No primeiro acesso a app não tem como ser offline, até que baixe e guarde em cache, a pessoa pode usar e caso queira se engajar (guardar a experiência) e instalar o app ele pode adicionar a home screen (instalar) através do menu do navegador (?). Os navegadores estão inteligentes para saber o melhor momento para o usuário instalar o app (Chrome lidera pesquisas sobre isso). Se o usuário está acessando o app algumas vezes e fica perceptível que você está gostando do conteúdo é exibido um banner nativo do navegador (install banner) sugerindo que o usuário instale o app (desde que o site possua o webmanifest). É melhor que aqueles banners chatos que são exibidos de imediato quando você acessa pela primeira vez, eles estão refinando isso para tentar saber o melhor momento para convidar o usuário a executar essa ação. Exemplo do Gmail que apesar de tudo exibe o banner de instalação logo de cara. Tamanho mínimo app com swift é 60MB. As pessoas não vão queimar 60MB de 3G só pq entrou num site de notíficas e você não exibe o conteúdo completo para forçar o usuário a baixar o app.
    - O futuro pode ser chat bots. Ao invés de instalar um app você simplesmente adiciona um bot no seu Facebook message, pergunta alguma coisa, ele respode e você vai embora, por ex.
    - Onde fica phonegap, ionic etc. Google fez várias palestras sobre PWA e anunciaram na palestra principal instant apps do android, pegando de surpresa a parte de desenvolvimento web da empresa que não sabiam. Perceberam que o grande gargalho é a instalação e tentaram solucionar isso com apps nativas e não com web, ainda não foi divulgado SDK etc. mas o cara clica em um link normal, e abre a primeira view da app como se fosse uma página. o desenvolvedor tem que modularizar a app, e vai baixando e exibindo a medida que o usuário utiliza, sem ter que instalar etc. Cada parte modular do app não pode ter mais que 4MB (divulgado pelo Google).
    - PhoneGap, o criado disse que o objetivo dele era que morresse um dia, ele vislumbrava o dia que a web chegasse lá e não precisasse mais dos recursos. (antes de vender para Adobe).
    - Existe pressão dos grandes players para adoção (Facebook - React native) para que as pessoas usam sempre a versão mais recente de forma transparente, sempre oferecendo isso direto pro usuário sem ter que ir buscar as novas atualizações.
    - alguns lugares, principalmente África e Ásia (sem internet 3g ou com acesso muito ruim) as pessoas não atualizam as apps, usuários compartilham versões dos apps como Facebook etc através de pendrives, nesses cenários mais limitados PWA são
  • => Apple não quer dançar a música que está tocando
    - Jobs foi o primeiro intusiasta mas quando descobriram o mercado enorme com App Store, criou-se uma resistência muito grande da evolução do safari no IOS porque para que isso avance eles vão ter que abrir mão do controle que eles possuem da loja, e historicamente são bem resistencia a esse tipo de mudança porque eles são bem restritivos com a loja e é complicado garantir o fluxo de dinheiro gerado pelos aplicativos. Lançaram o Apple Pay na web, mas nesse caso você teria que escolher usar e não obrigação.
    - Microsoft o grande problema de comprar é a falta de aplicativo, então pra eles é muito bom incentivar essa evolução, mas como o primeiro alvo dos desenvolvedores sempre é IOS, e eles desistem desse poder eles perdem a relevância desse modelo.
    - Google tem interesse em diminuir esse poder do concorrente, e como tem outras formas de monetizar, eles incentivam essa evolução e estão fazendo muita propaganda. Por mais que não façam dinheiro com android e apps, quando você usa android ele vem com todos os serviços deles instalados e o negócio principal do Google é, e sempre foi ads, ou seja, fazem dinheiro com você usando as ferramentas, eles querem que mais pessoas usem a web e serviços deles.
    - Suporte no Safari: O que foi anunciado em 2007, versão tataravó do webmanifest, é possível instalar na home screen com várias limitações, é proprietária da Apple, mas daria pra fazer uma solução com webmanifest e recursos mais novos em outros devices e uma versão com as metatags específicas da Apple para o IOS. Offline: a primeira especificação é a Application Cache API que surgiu muito tempo atrás na época dos primeiros iphones. Essa é uma especificação muito limitada, por isso surgiu uma especificação nova do services workers (que não tem no IOS). Mas poderia implementar no IOS com Application Cache API e Service Workers nos navegadores recentes, ou então no IOS não funcionar offline. Idem para push notifications.
    - E a busca? Nas stores é fácil ir lá e buscar uma app pelo nome, na web é mais orgânico: via google, links compartilhados em redes sociais etc. É mais fácil divulgar um link do que. Acesse a store, busque por x, baixe, instale, abra...
    - No primeiro acesso a app não tem como ser offline, até que baixe e guarde em cache, a pessoa pode usar e caso queira se engajar (guardar a experiência) e instalar o app ele pode adicionar a home screen (instalar) através do menu do navegador (?). Os navegadores estão inteligentes para saber o melhor momento para o usuário instalar o app (Chrome lidera pesquisas sobre isso). Se o usuário está acessando o app algumas vezes e fica perceptível que você está gostando do conteúdo é exibido um banner nativo do navegador (install banner) sugerindo que o usuário instale o app (desde que o site possua o webmanifest). É melhor que aqueles banners chatos que são exibidos de imediato quando você acessa pela primeira vez, eles estão refinando isso para tentar saber o melhor momento para convidar o usuário a executar essa ação. Exemplo do Gmail que apesar de tudo exibe o banner de instalação logo de cara. Tamanho mínimo app com swift é 60MB. As pessoas não vão queimar 60MB de 3G só pq entrou num site de notíficas e você não exibe o conteúdo completo para forçar o usuário a baixar o app.
    - O futuro pode ser chat bots. Ao invés de instalar um app você simplesmente adiciona um bot no seu Facebook message, pergunta alguma coisa, ele respode e você vai embora, por ex.
    - Onde fica phonegap, ionic etc. Google fez várias palestras sobre PWA e anunciaram na palestra principal instant apps do android, pegando de surpresa a parte de desenvolvimento web da empresa que não sabiam. Perceberam que o grande gargalho é a instalação e tentaram solucionar isso com apps nativas e não com web, ainda não foi divulgado SDK etc. mas o cara clica em um link normal, e abre a primeira view da app como se fosse uma página. o desenvolvedor tem que modularizar a app, e vai baixando e exibindo a medida que o usuário utiliza, sem ter que instalar etc. Cada parte modular do app não pode ter mais que 4MB (divulgado pelo Google).
    - PhoneGap, o criado disse que o objetivo dele era que morresse um dia, ele vislumbrava o dia que a web chegasse lá e não precisasse mais dos recursos. (antes de vender para Adobe).
    - Existe pressão dos grandes players para adoção (Facebook - React native) para que as pessoas usam sempre a versão mais recente de forma transparente, sempre oferecendo isso direto pro usuário sem ter que ir buscar as novas atualizações.
    - alguns lugares, principalmente África e Ásia (sem internet 3g ou com acesso muito ruim) as pessoas não atualizam as apps, usuários compartilham versões dos apps como Facebook etc através de pendrives, nesses cenários mais limitados PWA são
  • => App Shell
    - É como o código de uma app nativa que você coloca na loja, é o código necessário para que a app funcione mas não contém nenhum dado.
  • => App Shell
    - É como o código de uma app nativa que você coloca na loja, é o código necessário para que a app funcione mas não contém nenhum dado.
  • => Service Workers
    - A maioria das web apps são construídas em um modelo cliente/servidor, totalmente dependente do servidor. Service works ajudam a mudar isso,
  • => Service Workers
    - A maioria das web apps são construídas em um modelo cliente/servidor, totalmente dependente do servidor. Service works ajudam a mudar isso,
  • => Armazenamento
    - Você deve ter em mente que os browsers não prometem manter os dados para sempre, os dados podem ser removidos sem aviso, por isso é importante sincronizar esses dados com o servidor assim que possível. Uma outra vantagem de fazer isso é que dessa forma, ao mudar de dispositivo as configurações, os dados e demais informações estarão disponíveis para o usuário.
  • => Armazenamento
    - Você deve ter em mente que os browsers não prometem manter os dados para sempre, os dados podem ser removidos sem aviso, por isso é importante sincronizar esses dados com o servidor assim que possível. Uma outra vantagem de fazer isso é que dessa forma, ao mudar de dispositivo as configurações, os dados e demais informações estarão disponíveis para o usuário.
  • => Armazenamento
    - Você deve ter em mente que os browsers não prometem manter os dados para sempre, os dados podem ser removidos sem aviso, por isso é importante sincronizar esses dados com o servidor assim que possível. Uma outra vantagem de fazer isso é que dessa forma, ao mudar de dispositivo as configurações, os dados e demais informações estarão disponíveis para o usuário.
  • => Armazenamento
    - Você deve ter em mente que os browsers não prometem manter os dados para sempre, os dados podem ser removidos sem aviso, por isso é importante sincronizar esses dados com o servidor assim que possível. Uma outra vantagem de fazer isso é que dessa forma, ao mudar de dispositivo as configurações, os dados e demais informações estarão disponíveis para o usuário.
  • Progressive Web Apps

    1. 1. PROGRESSIVE WEB APPS Adquirindo super-poderes PROGRESSIVAMENTE
    2. 2. SORRY!
    3. 3. eu sou uma Progressive Web App PRAZER,
    4. 4. O QUE É uma PWA? NÃO é uma especificação PROGRESSIVE por adquirir poderes progressivamente de acordo com a capacidade dos browsers EVOLUÇÃO de ideias que foram surgindo e amadurecendo ao longo dos anos que podem ser melhor aplicadas hoje, no cenário atual É uma BUZZWORD que de novo mesmo tem pouca coisa
    5. 5. VANTAGENS de apps nativas? Ótima PERFORMANCE Facilmente ACESSÍVEL a partir da home screen ANIMAÇÕES e INTERAÇÕES suaves
    6. 6. DESVANTAGENS de apps nativas? TEMPO de instalação Não é COMPARTILHÁVEL ATUALIZAÇÃO não costuma ser um procedimento padrão Lidar com devices com baixa MEMÓRIA
    7. 7. Show me your POWERS!
    8. 8. VANTAGENS de uma PWA INSTALÁVEL (mas ainda compartilhável usando URLs) É possível utilizar PUSH NOTIFICATIONS Pode funcionar OFFLINE e conexões lentas CARREGAMENTO INSTANTÂNEO e com splash screen (apps nativas) Excelente RENDERIZAÇÃO e ANIMAÇÕES SUAVES com 60fps Ainda funciona como uma web app normal, acessível pelo BROWSER SEGURANÇA, pois service workers requerem tráfego usando HTTPS
    9. 9. DESVANTAGENS de uma PWA Ainda é algo muito RECENTE Não é possível usar todas as FUNCIONALIDADES NATIVAS do device (https://whatwebcando.today) COMPATIBILIDADE dos navegadores Requer um nível mais alto de EXPERIÊNCIA dos desenvolvedores para gerar algo de ALTA QUALIDADE
    10. 10. QUEM veio para a festa?
    11. 11. APPLE não quer dançar a música que está tocando
    12. 12. INGREDIENTES de uma PWA 1. APPLICATION SHELL 3. SERVICE WORKERS 2. WEB APP MANIFEST
    13. 13. 1. Application Shell
    14. 14. Application Shell No MODELO PADRÃO, toda a página, inclusive o conteúdo é gerada no servidor antes de ser entregue para o browser. PWAs separam as partes que são ALTERADAS COM FREQUÊNCIA, que são essencialmente o conteúdo, das partes que não sofrem tantas mudanças
    15. 15. APPLICATION SHELL representa o MÍNIMO de HTML, CSS e JS requerido para fornecer a INTERFACE para a PWA garantindo uma boa performance. Primeiro carregamento é EXTREMAMENTE RÁPIDO e vai imediatamente para o CACHE Nas requisições sequentes a PWA não precisa carregar tudo novamente, apenas os dados necessários Application Shell
    16. 16. O QUE deve estar no meu Application Shell? O que precisa estar na PRIMEIRA TELA imediatamente? Quais componentes da INTERFACE são essenciais para o aplicativo? Quais os assets necessários (javascripts, styles, imagens etc)
    17. 17. 2. Web App Manifest
    18. 18. Web App Manifest Arquivo de configuração JSON DEFINE nome, ícones, splash screen, theme color, modo full screen, orientação da tela App ISOLADA no gerenciador de tarefas como qualquer outro aplicativo
    19. 19. EXEMPLO Web App Manifest
    20. 20. Web App Manifest VALIDATOR
    21. 21. Web App INSTALL BANNER Funcionalidade somente do CHROME BANNER sugerindo ao usuário instalar seu aplicativo na home screen REQUISITOS: service workers, web app manifest, engajamento do usuário EVENTOS: antes de exibir o banner, após instalar o app etc. Existem opções no dev tools para testar esses eventos
    22. 22. 3. Service Workers
    23. 23. Service Workers É um arquivo JAVASCRIPT que roda em BACKGROUND, separado da sua página, que não precisa estar aberta Como um PROXY que fica entre o browser e o servidor interceptando as requisições e decidindo como agir Fornece PODERES para PWAs existirem ALÉM do browser
    24. 24. Service Workers Pode definir quais EVENTOS que irão despertar o service worker (push notifications, sincronização quando conexão for restaurada etc) Por interceptar as requisições necessita HTTPS (exceto desenvolvimento), oferecendo SEGURANÇA Ao interceptar requisições, pode fazer CACHE dos recursos e usá-los como resposta em requisições subsequentes, respondendo instantaneamente e offline
    25. 25. REGISTRANDO Service Worker
    26. 26. REGISTRANDO Service Worker
    27. 27. ESCOPO Service Worker
    28. 28. INSTALANDO Service Worker
    29. 29. INTERCEPTANDO REQUISIÇÕES Service Worker
    30. 30. DICAS Service Workers Utilize o MODO ANÔNIMO para se certificar que os service workers e qualquer coisa que esteja em cache irão expirar chrome://serviceworker-internals - service workers instalados e seus estados. Você pode atualizá-los ou removê-los
    31. 31. DICAS Service Workers ATENÇÃO: Várias abas abertas compartilham o mesmo service worker. Ao atualizar o service worker a versão mais recente fica inativa até que todas as abas sejam fechadas ao se fechar a janela
    32. 32. DICAS Service Workers Use a guia Resources do Chrome Dev Tools para checar o que está acontecendo com service workers, cache, armazenamento etc
    33. 33. COMPATIBILIDADE Service Workers
    34. 34. FÁCIL de usar e baseado em chave-valor ARMAZENAMENTO Local Storage Pode armazenar APENAS STRINGS SÍNCRONO DISPONÍVEL em quase todos os navegadores NÃO é transacional Deve ser EVITADO!
    35. 35. ARMAZENAMENTO Caches Object FÁCIL de usar ASSÍNCRONO Muito RÁPIDO NÃO é transacional RECENTE e possui compatibilidade muito baixa
    36. 36. ARMAZENAMENTO IndexedDB RÁPIDO Permite armazenas DADOS COMPLEXOS ASSÍNCRONO TRANSACIONAL Alta COMPATIBILIDADE
    37. 37. ARMAZENAMENTO IndexedDB DIFICULDADE de uso da API, que exige várias configurações e manuseio de callbacks Biblioteca FACILITAM O USO: 1 - localForage - publicado pela Mozilla, fornece uma API parecida com Local Storage 2 - LoveField - fornece uma API parecida com SQL Opção mais INDICADA
    38. 38. EXEMPLOS de PWAs FLIPBOARD - Aplicativo agregador no formato de revistas traduzidos em mais de 20 idiomas Usuários ativos por mês cresceram 75%. Na web usuários podem chegar até um site através de um simples click FLIPKART - Mais popuplar ecommerce Indiano 63% dos usuários com internet 2G. Adicionaram service workers e simplificaram o site, facilitando a busca dos produtos e usando 3x menos dados do usuário. Navegação e visualização dos produtos offline resultaram em aumento de engajamento e vendas
    39. 39. #sóquenão
    40. 40. Referências https://classroom.udacity.com/courses/ud811 https://www.youtube.com/watch?v=sH7dlRnuh- k&feature=youtu.be&a= http://hipsters.tech/progressive-web-apps-hipsters-03 https://www.smashingmagazine.com/2016/08/a-beginners- guide-to-progressive-web-apps/
    41. 41. OBRIGADO!

    ×