O que são Notificações Push (APNs & FCM)?

Atualizado em: agosto de 2026

Uma notificação push é uma mensagem iniciada no servidor que os serviços de push da plataforma entregam ao dispositivo mesmo com o app fechado. Times de produto conhecem o push como canal de engajamento; este verbete cobre a maquinaria de entrega — porque a maquinaria explica cada esquisitice de que os times de produto reclamam. O fato central: seu servidor nunca fala com o celular. Cada sistema operacional mobile mantém exatamente uma conexão persistente e otimizada para bateria com o seu gateway de push — APNs (Apple Push Notification service) no iOS, FCM no Android — e toda notificação de todo app viaja por esse cano compartilhado.

Principais pontos

PerguntaResposta
A cadeiaSeu backend → APNs/FCM → o único socket persistente do SO → o app
O endereçoToken de dispositivo — por instalação, muda o tempo todo, precisa de sync e poda
O contratoBest-effort: aceito ≠ entregue, com throttling, desativável pelo usuário
Os limitesPayloads de ~4 KB · flags de prioridade · pushes silenciosos num orçamento horário mínimo
vs. socketsPush alcança apps fechados; WebSockets servem apps abertos

A cadeia de entrega, de ponta a ponta

1  O app pede ao SO o registro para push
2  O serviço de push da plataforma emite um TOKEN DE DISPOSITIVO (o endereço)
3  O app envia o token ao SEU backend, que o armazena
4  Algo acontece → o backend faz POST de { token, payload ≤4 KB } ao APNs / FCM
5  O serviço de push localiza a conexão persistente do dispositivo → entrega
6  O SO exibe a notificação — ou acorda o app por instantes num push silencioso

O segundo papel do FCM: com as credenciais APNs enviadas a ele, aceita uma
request e reemite uma request compatível com APNs para dispositivos Apple —
uma única superfície de API para as duas plataformas. Um BaaS abstrai até isso.

As duas metades em código — o cliente registrando seu endereço, o backend enviando a um canal:

// JavaScript — Cloud Code (cloud/main.js)
// One send call reaches both platform push services
await Parse.Push.send({
  channels: ['scores'], // or `where:` with an Installation query
  data: {
    alert: 'Kickoff! Follow the match live.',
    badge: 'Increment',
    uri: 'app://match/8fk2',
  },
}, { useMasterKey: true });
// Back4app routes to APNs for Apple devices and FCM for Android — one API
Entrega de notificação push através dos serviços de push das plataformasO app se registra no serviço de push da sua plataforma e recebe um token de dispositivo, que sincroniza com o backend da aplicação. O backend envia payloads com tokens ao APNs ou ao FCM, que entregam pela única conexão persistente que cada sistema operacional mantém, e o SO exibe a notificação mesmo quando o app está fechado.

1 · registro

2 · token de dispositivo

3 · sync do token

4 · payload + token

5 · uma conexão
persistente do SO

6 · exibe / acorda o app

App no dispositivo

Serviço de push da plataforma
APNs / FCM

Seu backend
registro de tokens

SO do dispositivo

Notificação
(o app pode estar fechado)

O app se registra no serviço de push da sua plataforma e recebe um token de dispositivo, que sincroniza com o backend da aplicação. O backend envia payloads com tokens ao APNs ou ao FCM, que entregam pela única conexão persistente que cada sistema operacional mantém, e o SO exibe a notificação mesmo quando o app está fechado.

Tokens de dispositivo: o endereço que não para de mudar

O ciclo de vida do token é o trabalho de verdade do backend, e a parte que as páginas explicativas pulam. Registrar: o SO emite um token por instalação do app. Armazenar: o app o sincroniza com seu backend a cada launch — tokens mudam em reinstalação, restauração e limpeza de dados, silenciosamente. Endereçar: os envios apontam para tokens, individualmente ou via registro. Invalidar: envios a tokens mortos voltam com erros específicos — 410 Gone do APNs, erros de token não registrado do FCM — e o FCM aposenta tokens sem uso por cerca de nove meses. Podar: exclua ao ver esses erros, imediatamente. Backends que pulam o último passo acumulam tabelas de tokens apodrecendo, que desperdiçam envios, distorcem métricas de entrega e atrasam campanhas — o problema do token velho é chato, cumulativo e o bug de push mais comum no mundo real.

APNs vs. FCM

APNsFCM
AlcançaDispositivos Apple — a única estradaAndroid nativamente; dispositivos Apple via proxy para o APNs
AutenticaçãoChave de assinatura .p8 (key ID + team ID)Credenciais de servidor do console da plataforma
Payload~4 KB · dicionário aps~4 KB · mensagens de notification + data
Dispositivo offlineCoalesce — guarda só a mais nova por appFila com TTL, até ~4 semanas
Prioridade10 (imediata) vs. 5 (amiga da bateria)High vs. normal
ExtrasCollapse IDs, pushes em segundo planoTopics, grupos de dispositivos, collapse keys

A consequência prática da primeira linha: todo backend cross-platform ou integra os dois serviços, ou usa o FCM como superfície única (enviando as credenciais APNs a ele), ou entrega o problema inteiro a uma plataforma que guarda os dois conjuntos de credenciais — que é onde a seção de BaaS aterrissa.

O que o push não promete

O contrato honesto, reunido num lugar só. Um 200 do serviço de push significa aceito para entrega, não entregue. Dispositivos offline não acumulam uma fila fiel: o APNs guarda apenas a notificação mais recente por app; a fila do FCM expira num TTL. Otimizadores de bateria no Android adiam a entrega de formas que você não controla; o usuário pode silenciar um canal ou o app inteiro no nível do SO, invisivelmente para o seu backend. Pushes silenciosos — despertares em segundo plano sem alerta visível — rodam num orçamento horário mínimo e são descartados sem erro além dele, conforme a orientação da própria Apple; são dicas de refresh, não um protocolo de sincronização. A regra de design que decorre disso: push é o toque no ombro — os dados em si viajam pela sua API quando o app abre, e qualquer coisa que precisa chegar ganha um segundo canal.

Web push, em resumo

Os navegadores padronizaram sua própria cadeia: a página se inscreve via Push API usando o seu par de chaves VAPID (RFC 8292 — o servidor se identifica com um token assinado, sem registro junto a fornecedor), o serviço de push do navegador retorna uma subscription (URL de endpoint + chaves de criptografia) e seu servidor faz POST de payloads criptografados para esse endpoint conforme o Web Push Protocol. Um service worker recebe o evento push e exibe a notificação — site fechado, navegador talvez fechado no desktop. Cada fabricante de navegador roda seu próprio serviço de push; a URL do endpoint diz ao seu servidor onde fazer o POST. A ressalva honesta: no iOS, o web push só funciona para web apps instalados na Tela de Início.

Push vs. WebSockets vs. live queries

Notificações pushWebSockets / live queries
Estado do appFechado ou em segundo planoAberto, conectado
DireçãoUma via, servidor → dispositivoFull duplex / push por subscription
Latência e confiabilidadeNa casa de segundos, best-effortMilissegundos, garantida pela conexão
PayloadResumo de ~4 KB + deep linkO que o seu protocolo carregar
O híbridoO padrão de produção: entregue pelo socket se conectado; caia para push depois de alguns segundos se não

São complementos com uma fronteira: o socket serve o usuário olhando para a tela; o push alcança o usuário que largou o celular. Apps de chat demonstram o híbrido diariamente — mensagens fluem pela conexão enquanto o app está aberto, e a mesma mensagem vira push no momento em que ele deixa de estar.

Casos de uso comuns

  • Mensagens e menções — o push canônico: alguém precisa de você, o app está fechado.
  • Alertas transacionais — pedido enviado, carro chegando, pagamento aprovado: resumos de uma linha com deep link para dentro do app.
  • Gatilhos sensíveis ao tempo — mudanças de placar, alertas de preço, momentos “X está ao vivo” vizinhos de presença.
  • Reengajamento — usado com parcimônia, com opt-out por canal, ou os usuários desativam tudo.
  • Badges e dicas de estado — o orçamento silencioso gasto em cutucar o app para atualizar antes de o usuário abrir.

Você deveria usar push? Matriz de decisão

SituaçãoEscolha
O usuário precisa saber mesmo com o app fechadoPush — seu trabalho por definição
O app está aberto na telaLive queries / sockets — mais rápidos, confiáveis
O dado precisa chegar, garantidoSua API + sincronização em segundo plano; push como o toque
Público webWeb push via VAPID + service worker
Sincronizações silenciosas frequentesNão faça — o orçamento vai descartá-las; sincronize ao abrir
Duas plataformas, um timeUma API sobre os dois serviços — o modo proxy do FCM ou um BaaS

Limitações e trade-offs

  • Entrega é probabilidade, não promessa. Projete fluxos que sobrevivam a um push perdido; reconcilie ao abrir o app.
  • Permissões são capital de um tiro só. O prompt do SO (explícito no iOS e na web, em runtime no Android moderno) converte melhor pedido em contexto — e um prompt negado é quase irreversível.
  • O registro de tokens é um dataset vivo. Sincronize no launch, pode ao errar, ou veja a entregabilidade decair em silêncio.
  • Payloads são meio públicos. Notificações aparecem em telas de bloqueio e atravessam infraestrutura de terceiros — resumos e IDs, nunca segredos.
  • Dois sistemas de credenciais, uma feature. Chaves .p8, credenciais de console, expiração e rotação — a dor de configuração é real, uma vez por plataforma, e é exatamente o que camadas gerenciadas absorvem.

Push no Back4app

O Back4app é uma plataforma open-source de Backend as a Service (BaaS) que combina banco de dados gerenciado, APIs REST e GraphQL geradas automaticamente, autenticação, armazenamento de arquivos e funções serverless com Cloud Code. O serviço de push do Back4app transforma a cadeia inteira em dados: cada instalação se registra como um objeto Installation — token de dispositivo, plataforma, canais e um ponteiro de usuário capturados automaticamente, como mostram as abas de cliente — e uma única chamada de envio endereça canais (estilo tópicos) ou qualquer consulta de Installations (“todo mundo em scores no Android que não abriu o app esta semana”), com a plataforma guardando suas credenciais APNs e FCM e roteando por dispositivo. Os envios disparam do Cloud Code — um afterSave em Message fazendo push para o destinatário é a metade de fallback do padrão híbrido — de jobs agendados, ou do console do dashboard para campanhas pontuais. Higiene de tokens, credenciais duplas e esquisitices de payload por plataforma viram comportamento da plataforma; seu código decide quem e o quê, não como.

Perguntas frequentes

O que é notificação push?

Uma mensagem iniciada no servidor, entregue ao dispositivo pelo serviço de push do sistema operacional e exibida mesmo quando o app não está rodando. Essa última propriedade é a que define o conceito — é o que separa o push das mensagens in-app, que precisam do app aberto, e dos sockets, que precisam de uma conexão viva.

Como as notificações push funcionam de ponta a ponta?

O app se registra no serviço de push da sua plataforma e recebe um token de dispositivo; o app entrega esse token ao seu backend; seu backend envia um payload mais o token ao APNs ou ao FCM; o serviço de push entrega pela conexão persistente que o SO mantém; o SO exibe a notificação ou acorda o app.

O que é um token de dispositivo?

Um identificador opaco de uma instalação do app em um dispositivo, emitido pelo serviço de push da plataforma — um endereço, não um segredo. Ele muda em reinstalações, restaurações ou limpezas de dados, e é por isso que os apps o ressincronizam com o backend a cada launch e os backends o excluem quando os envios reportam que ele morreu.

Qual a diferença entre APNs e FCM?

APNs (Apple Push Notification service) é a única estrada até dispositivos Apple. FCM é o serviço de push da plataforma Android — e dobra como camada cross-platform: com as credenciais APNs enviadas a ele, aceita uma request e reemite uma request compatível com APNs para os dispositivos Apple. Uma API, as duas plataformas.

Por que meu servidor não pode fazer push direto para um dispositivo?

Porque só o sistema operacional mantém a única conexão persistente, otimizada para bateria, com o seu serviço de push — um socket compartilhado por todos os apps do celular. Servidores arbitrários não conseguem manter conexões abertas através de rádios, NAT e estados de sono, então todo push passa pelos gateways da plataforma.

Como funciona o web push?

Por meio de service workers: a página se inscreve com a sua chave pública VAPID, o serviço de push do navegador retorna uma subscription — uma URL de endpoint mais chaves de criptografia — e seu servidor faz POST de payloads criptografados para esse endpoint conforme o Web Push Protocol. O evento push do service worker exibe a notificação, mesmo com o site fechado.

A entrega do push é garantida?

Não — uma resposta de sucesso do APNs ou do FCM significa aceito, não entregue. Dispositivos offline recebem filas coalescidas ou com prazo de validade, otimizadores de bateria atrasam a entrega e o usuário pode desativar as notificações por completo. Push é best-effort por design; qualquer coisa crítica precisa também de outro canal.

O que são notificações push silenciosas?

Pushes em segundo plano que acordam o app para buscar dados sem exibir alerta. São fortemente limitadas — pense num pequeno orçamento por hora, com envios acima dele descartados sem erro — então funcionam como dicas de refresh, nunca como transporte confiável de sincronização.

Termos relacionados

Compare com

Leitura adicional

Pronto para construir seu backend?

Comece seu projeto no Back4app em minutos — banco de dados, autenticação, APIs e Cloud Code incluídos. Sem cartão de crédito.

Escrito e revisado por Back4app Engineering, Back4app Engineering · Publicado em 2026-08-21