Web Push API

A Web Push API e um standard W3C que permite aos sites web enviar notificacoes push para browsers. Define a forma como os servidores web estabelecem subscricoes push, autenticam o envio e entregam as mensagens, independentemente do fornecedor de browser.

Definicao

A Web Push API e um standard tecnico do W3C (World Wide Web Consortium) que permite aos sites web enviar mensagens push para os browsers dos utilizadores. Junto com a Service Worker API, forma a base tecnica de todas as Browser Push Notifications.

O standard esta disponivel em todos os browsers desktop comuns (Chrome, Firefox, Edge, Safari no macOS) e no Android em Chrome e Firefox. Nao existe um equivalente de App Push nativo para iOS no Web Push API; no iOS, o Push so e possivel atraves de Web Apps instaladas.

Componentes centrais da Web Push API

A Web Push API consiste em tres componentes centrais:

1. Subscricao Push

Uma subscricao Push e criada quando um utilizador autoriza as notificacoes Push. O browser gera um objeto de subscricao unico contendo:

  • endpoint URL: Um URL unico do fornecedor de push (por exemplo, https://fcm.googleapis.com/... para Chrome) atraves do qual as notificacoes sao enviadas
  • keys: Chaves criptograficas para a criptografia das mensagens (p256dh e auth)

Este objeto de subscricao e transmitido ao servidor e guardado. Nao contem dados de contacto pessoais.

2. VAPID (Voluntary Application Server Identification)

O VAPID e o mecanismo de autenticacao que identifica o servidor de envio de forma inequivoca. Antes do envio, um servidor gera um par de chaves VAPID:

  • Chave publica: E transmitida ao browser durante o opt-in e usada para verificar o remetente
  • Chave privada: Permanece no servidor e assina cada pedido de envio

O VAPID previne o abuso ao garantir que so o servidor autorizado pode enviar para uma subscricao. Plataformas como o SendSeven gerem as chaves VAPID de forma transparente.

3. Payload e criptografia

O conteudo de uma notificacao Push (titulo, texto, URL de imagem, link de destino) e encriptado no servidor antes do envio, transmitido atraves da rede encriptado e so desencriptado no browser destinatario. Isto garante que nem o fornecedor do servico push (Google, Mozilla, etc.) pode ler o conteudo.

Como funciona a entrega

O processo tecnico de uma notificacao Push em quatro passos:

  1. Subscricao: O browser cria uma subscricao Push e transmite-a ao servidor
  2. Armazenamento: O servidor guarda o endpoint da subscricao e as chaves
  3. Envio: O servidor envia um pedido HTTP POST para o endpoint de subscricao com o payload encriptado, autenticado via VAPID
  4. Entrega: O fornecedor de push (Google, Mozilla, etc.) entrega a mensagem ao browser; o Service Worker recebe o evento push e exibe a notificacao

Web Push API em plataformas como o SendSeven

Plataformas como o SendSeven abstraem todos os detalhes tecnicos da Web Push API. O gestor de marketing nao precisa de se preocupar com chaves VAPID, subscricoes de endpoints ou criptografia de payloads. O SDK do SendSeven trata disso, e a interface de campanhas oferece uma camada de gestao simples para envio e segmentacao.

O Developer que integra o SendSeven configura apenas uma vez o Service Worker e o SDK. Depois, todas as funcionalidades de Push ficam disponiveis atraves da plataforma ou da REST API.

Limites tecnicos a considerar

  • TTL (Time to Live): Cada notificacao Push tem um periodo de validade (TTL). Se o dispositivo do utilizador estiver offline quando o servidor Push tenta a entrega, a mensagem fica em fila de espera ate ao TTL. Depois e eliminada sem entrega.
  • Sem garantia de entrega: A Web Push API nao garante entrega garantida. Em caso de problemas de rede ou browser fechado sem Service Worker ativo, as mensagens podem nao ser entregues.
  • Sem rastreio de leitura: A Web Push API nao notifica o servidor quando uma notificacao foi vista. Apenas os cliques podem ser rastreados se o Service Worker transmitir o evento de clique ao servidor.
  • Sem iOS nativo: No iOS sem Web App instalada, a Web Push API nao esta disponivel.