Antes de entrar na API, vamos analisar o push de forma geral, do início ao fim. Depois, ao apresentarmos os tópicos ou APIs individuais mais adiante, você vai ter uma ideia de como e por que isso é importante.
As três etapas principais para implementar o push são:
- Adicionar a lógica do lado do cliente para inscrever um usuário em push (ou seja, o JavaScript e a interface do usuário no app da Web que registra um usuário para mensagens push).
- A chamada de API do back-end/aplicativo que aciona uma mensagem push no dispositivo de um usuário.
- O arquivo JavaScript do service worker que receberá um "evento push" quando o push chegar ao dispositivo. É nesse JavaScript que você poderá mostrar uma notificação.
Vamos conferir mais detalhes sobre cada uma dessas etapas.
Etapa 1: lado do cliente
A primeira etapa é "inscrever" um usuário para receber mensagens push.
Inscrever um usuário requer duas coisas. Primeiro, consiga permissão do usuário para enviar
mensagens push. Em segundo lugar, como receber um PushSubscription
do navegador.
Um PushSubscription
contém todas as informações necessárias para enviar uma mensagem push a esse usuário.
Você pode pensar nisso como um ID do dispositivo do usuário.
Tudo isso é feito em JavaScript com a API Push.
Antes de assinar um usuário, você precisa gerar um conjunto de "chaves do servidor de aplicativos", que serão abordadas mais adiante.
As chaves do servidor do aplicativo, também conhecidas como chaves VAPID, são exclusivas do servidor. Elas permitem que um serviço push saiba qual servidor de aplicativo inscreveu um usuário e garante que ele seja o mesmo servidor que aciona as mensagens push para esse usuário.
Depois de assinar o usuário e ter um PushSubscription
, você precisará enviar os
detalhes do PushSubscription
para o back-end/servidor. No seu servidor, você salvará essa
assinatura em um banco de dados e a usará para enviar uma mensagem push a esse usuário.
Etapa 2: enviar uma mensagem push
Quando você quiser enviar uma mensagem push aos usuários, faça uma chamada de API para um serviço push. Essa chamada de API incluiria quais dados enviar, para quem enviar a mensagem e qualquer critério sobre como enviar a mensagem. Normalmente, essa chamada de API é feita pelo seu servidor.
Estas são algumas perguntas que você pode estar fazendo a si mesmo:
- O que é o serviço push?
- Como é a API? JSON, XML ou outra coisa?
- O que a API pode fazer?
Quem e o que é o serviço de push?
Um serviço push recebe uma solicitação de rede, a valida e envia uma mensagem push ao navegador apropriado. Se o navegador estiver off-line, a mensagem será enfileirada até que ele fique on-line.
Cada navegador pode usar qualquer serviço push que quiser. Isso é algo que os desenvolvedores não controlam. Isso não é um problema, porque todos os serviços de push esperam a mesma chamada de API. Ou seja, você não precisa se preocupar com quem é o serviço de push, basta garantir que a chamada de API seja válida.
Para conseguir o URL apropriado para acionar uma mensagem de push (ou seja, o URL do serviço de push), você só precisa observar o valor endpoint
em um PushSubscription
.
Confira abaixo um exemplo dos valores que você vai receber de uma PushSubscription:
{
"endpoint": "https://random-push-service.com/some-kind-of-unique-id-1234/v2/",
"keys": {
"p256dh": "BNcRdreALRFXTkOOUHK1EtK2wtaz5Ry4YfYCA_0QTpQtUbVlUls0VJXg7A8u-Ts1XbjhazAkj7I99e8QcYP7DkM=",
"auth": "tBHItJI5svbpez7KI4CCXg=="
}
}
O endpoint, neste caso, é [https://random-push-service.com/some-kind-of-unique-id-1234/v2/]. O serviço push seria 'random-push-service.com', e cada endpoint é exclusivo para um usuário, indicado com 'some-kind-of-unique-id-1234'. Ao começar a trabalhar com push, você vai notar esse padrão.
As chaves na assinatura serão abordadas mais tarde.
Como é a API?
Mencionei que todos os serviços de push da Web esperam a mesma chamada de API. Essa API é o protocolo de push da Web. É um padrão IETF que define como fazer uma chamada de API para um serviço push.
A chamada de API exige que alguns cabeçalhos sejam definidos e que os dados sejam um fluxo de bytes. Vamos conferir as bibliotecas que podem realizar essa chamada de API e como fazer isso por conta própria.
O que a API pode fazer?
A API oferece uma maneira de enviar uma mensagem para um usuário, com ou sem dados, e fornece instruções sobre como enviar a mensagem.
Os dados enviados com uma mensagem push precisam ser criptografados. O motivo é que isso impede que serviços push, que podem ser qualquer pessoa, acessem os dados enviados com a mensagem push. Isso é importante porque é o navegador que decide qual serviço push usar, o que pode abrir a porta para navegadores que usam um serviço push que não é seguro.
Quando você aciona uma mensagem push, o serviço push recebe a chamada de API e enfileira a mensagem. Essa mensagem vai permanecer na fila até que o dispositivo do usuário fique on-line e o serviço de push possa entregar as mensagens. As instruções que você pode fornecer ao serviço push definem como a mensagem push é enfileirada.
As instruções incluem detalhes como:
O tempo de vida útil de uma mensagem push. Isso define por quanto tempo uma mensagem precisa ficar na fila antes de ser removida e não entregue.
Defina a urgência da mensagem. Isso é útil caso o serviço push esteja preservando a duração da bateria dos usuários ao enviar apenas mensagens de alta prioridade.
Dê um nome de "assunto" a uma mensagem push que vai substituir qualquer mensagem pendente por essa nova mensagem.
Etapa 3: enviar o evento ao dispositivo do usuário
Depois de enviar uma mensagem push, o serviço push vai manter a mensagem no servidor até que um dos seguintes eventos ocorra:
- O dispositivo fica on-line e o serviço push entrega a mensagem.
- A mensagem expira. Se isso ocorrer, o serviço push vai remover a mensagem da fila e ela nunca será entregue.
Quando o serviço push entrega uma mensagem, o navegador a recebe, descriptografa todos os
dados e envia um evento push
no service worker.
Um service worker é um arquivo JavaScript "especial". O navegador pode executar esse JavaScript sem que a página esteja aberta. Ele pode até mesmo executar esse JavaScript quando o navegador está fechado. Um service worker também tem APIs, como push, que não estão disponíveis na página da Web (ou seja, APIs que não estão disponíveis fora de um script de service worker).
É dentro do evento "push" do worker do serviço que você pode realizar tarefas em segundo plano. É possível fazer chamadas de análise, armazenar páginas em cache off-line e mostrar notificações.
Esse é o fluxo completo de mensagens push.
A seguir
- Visão geral das notificações push na Web
- Como o Push funciona
- Assinar um usuário
- UX de permissão
- Como enviar mensagens com bibliotecas push da Web
- Protocolo push na Web
- Processamento de eventos push
- Como mostrar uma notificação
- Comportamento da notificação
- Padrões de notificação comuns
- Perguntas frequentes sobre notificações push
- Problemas comuns e como informar bugs