Quais recursos os Progressive Web Apps têm vs. os aplicativos nativos e vice-versa, no Android [fechado]

112

Em 2015, o Google introduziu uma nova abordagem para o desenvolvimento de aplicativos da web para Android: aplicativos da web progressivos . Pode-se criar um aplicativo que se parecerá com um aplicativo nativo, será capaz de usar o hardware do dispositivo como câmera e acelerômetros, receber notificações push, ter um ícone de iniciador, trabalhar offline, armazenar dados locais, etc.

No Android, quais recursos os aplicativos nativos fornecem que os aplicativos da web progressivos não suportam e vice-versa.

Michael
fonte

Respostas:

201

TL; DR - a partir de fevereiro de 2017, os Progressive Web Apps são uma plataforma suficientemente poderosa para que o Twitter mova todo o seu tráfego da web móvel para um React PWA .

Em agosto de 2016, os Progressive Web Apps oferecem, na verdade, mais acesso ao hardware do que normalmente se pensa. Aqui está uma captura de tela do whatwebcando.today do meu Chrome 52 estável no Android:

O que a web pode fazer hoje - Chrome 52 no Android

O acesso ao hardware inclui

Próximo acesso ao hardware

Esses recursos estão sendo implementados ou já funcionam em alguns navegadores:

Outro ponto importante a ser observado é que o Origin Trials Framework ( implementado no Chrome ) permite que os fabricantes exponham e testem os recursos de hardware (ou software) sem ter que passar pelo processo de padronização. Por exemplo, um fabricante de telefones pode expor um API para ler os valores de um sensor de pressão, refiná-lo e, em seguida, enviá-lo para consideração ao W3C.

Além do acesso ao hardware, também existem recursos de software tradicionalmente empregados por aplicativos nativos que agora estão disponíveis para aplicativos da web.

Recursos tradicionalmente nativos que os PWAs também podem usar

Esses recursos abrangem muitos casos de uso, e muitos aplicativos nativos populares hoje em dia podem ser reescritos como PWAs. Veja o Slack, por exemplo. Sua alternativa de código aberto, Rocket.Chat, está construindo uma versão PWA . Para obter mais demonstrações do PWA, consulte https://pwa.rocks .

Recursos nativos chegando aos PWAs

Recursos nativos do Android ainda não disponíveis para PWAs

  • acesso ao sensor de impressão digital ( em desenvolvimento )
  • acesso a contatos, calendário e favoritos do navegador (a falta de acesso a eles pode ser vista como um recurso por usuários preocupados com a privacidade)
  • alarmes
  • recursos de telefonia - interceptar SMS ou chamadas, enviar SMS / MMS, obter o número de telefone do usuário, ler correio de voz, fazer chamadas sem a caixa de diálogo do discador
  • acesso de baixo nível a alguns recursos de hardware e sensores: lanterna, sensor de pressão atmosférica
  • acesso ao sistema: gerenciamento de tarefas, modificação das configurações do sistema, registros

Os Progressive Web Apps oferecem recursos que faltam aos aplicativos nativos

  • descoberta - o conteúdo em aplicativos da web progressivos pode ser facilmente encontrado por mecanismos de pesquisa, mas um aplicativo nativo centrado em conteúdo como o StackOverflow não aparecerá entre os resultados de pesquisa da loja de aplicativos para conteúdo ao qual oferece acesso, como "pwa vs. nativo". Este é um problema para comunidades como o Reddit, que não pode expor suas numerosas subcomunidades à loja de aplicativos como "aplicativos" individuais.
  • capacidade de ligação - qualquer página / tela pode ter um link direto, que pode ser compartilhado facilmente
  • bookmarkability - salve esse link para acessar a visualização de um aplicativo diretamente
  • sempre fresco - não há necessidade de passar pelas lojas de aplicativos para enviar atualizações
  • acesso universal - não sujeito às lojas de aplicativos, às vezes por políticas arbitrárias ou restrições geográficas (não intencionais)
  • grande economia de dados , extremamente importante em mercados emergentes com acesso caro e / ou lento à Internet. Por exemplo, o site de comércio eletrônico Konga cortou o uso de dados em 92% para o primeiro carregamento, migrando para um PWA .
  • baixo atrito de distribuição - se seu aplicativo da web progressivo estiver online, ele já estará acessível para usuários de Android (e outros dispositivos móveis).

Nota final: os PWAs são executados, com a mesma base de código, no desktop e na maioria dos dispositivos móveis. Em ambientes de desktop (ChromeOS e posterior Mac e Windows), eles são iniciados da mesma forma que outros aplicativos e executados em uma janela de aplicativo normal (sem guia do navegador).

Dan Dascalescu
fonte
1
Uma pequena nota: com "Android Instant Apps", você pode argumentar que os aplicativos nativos (pelo menos no Android) não têm mais capacidade de link.
shawnjan
Boa resposta Dan! Existe uma maneira de os PWAs acessarem o número de telefone do dispositivo host?
Alexander Mills
@Alexander: não (veja o item "recursos de telefonia"), pois seria uma violação de privacidade. Considere usar o preenchimento automático .
Dan Dascalescu
12

A principal vantagem dos aplicativos nativos é que eles podem acessar todas as APIs nativas que uma plataforma pode oferecer (contatos, flash de câmera, SMS, telefonia, rede, bluetooth, sensores, sockets raw ...) enquanto um aplicativo Web progressivo não pode (ainda) pois são restringidos pelos recursos da Web padrão.

O objetivo dos aplicativos da web progressivos é expandir esses recursos para cobrir os casos mais críticos. Nesse clima, dê uma olhada em Progressive Web Apps: Escape Tabs Without Loosing Our Soul, onde você pode encontrar uma lista do que um aplicativo progressivo da web deve oferecer:

  • Responsivo: para caber em qualquer fator de forma
  • Independente de conectividade: progressivamente aprimorada com Service Workers para deixá-los trabalhar offline
  • Interações semelhantes a aplicativos: adote um modelo de aplicativo Shell + Conteúdo para criar navegações e interações atraentes
  • Fresh: Transparentemente sempre atualizado, graças ao processo de atualização do Service Worker
  • Seguro: servido via TLS (um requisito do Service Worker) para evitar espionagem
  • Detectáveis: são identificáveis ​​como "aplicativos" graças aos manifestos do W3C e ao escopo de registro do Service Worker, permitindo que os mecanismos de pesquisa os encontrem
  • Reengajável: Pode acessar as UIs de reengajamento do SO; por exemplo, notificações push
  • Instalável: para a tela inicial por meio de prompts fornecidos pelo navegador, permitindo que os usuários “mantenham” os aplicativos que consideram mais úteis sem o incômodo de uma loja de aplicativos
  • Linkable: o que significa que são sem atrito, sem instalação e fáceis de compartilhar. O poder social dos URLs é importante.

A partir desses pontos, linkable foi uma das primeiras características importadas por aplicativos nativos da Open Web na forma de deep linking móvel .

Mas uma menção especial merece o combo fresh + installable , pois representa uma das principais vantagens da Web como plataforma sobre as alternativas nativas . Aqui, instalável significa que ele aparece na tela inicial. Isso não significa que você precisa passar pelos estágios de download e instalação. Você abre um URL ou descobre um serviço enquanto navega e pronto: ele aparece na tela inicial .

Fresh se refere a como uma web normal funciona, oferecendo carregamento instantâneo e atualizações contínuas. Não é solicitado que você instale uma atualização da web do YouTube, ela é implantada e você a consome na próxima vez que visitá-la.

Não estou falando sobre os benefícios dos pontos restantes porque você estava pedindo as diferenças e, por exemplo, reengajamento é algo que os aplicativos nativos já possuem por meio de serviços de push e notificações e agora os aplicativos da web estão atualizados.

Outra questão relacionada e importante é sobre qual plataforma é mais adequada para suas necessidades. Se você não está acessando recursos especiais de hardware, a Web deve ser suficiente e escolhendo a web você está livre dos mercados, ecossistemas proprietários e, por falar nisso, você pode garantir certo grau de ubiqüidade e interoperabilidade .

Como notas finais, recomendo que você navegue em www.flipkart.com de um celular com Chrome. É incrível: sem bugs, navegação suave, sensação de app. Fique offline e ele continuará funcionando. Um exemplo do mundo verdadeiramente real dessa postagem. Adicione o aplicativo à tela inicial e, da próxima vez que abri-lo, a experiência será ainda melhor.

Você pode dar uma olhada no Firefox OS , bem como um exemplo de trazer mais APIs de plataforma para a Web padrão (com mais ou menos sucesso).

Salva
fonte
Os PWAs podem acessar a câmera, bem como vários sensores .
Dan Dascalescu