Notificações Push são mensagens enviadas pelo servidor para um dispositivo móvel mesmo quando o aplicativo está fechado. De acordo com Google Firebase, 2024, as notificações Push são processadas através de serviços especializados — FCM no Android e APNS no iOS, que suportam entrega em tempo real para milhões de dispositivos simultaneamente. Elas se tornaram uma parte integrante da experiência do usuário em aplicativos móveis modernos.
Principais pontos
Notificações Push são mensagens curtas que o servidor do aplicativo envia para o dispositivo do usuário sem uma solicitação explícita. Elas aparecem como banners, emblemas no ícone ou sinais sonoros, atraindo a atenção do usuário para o aplicativo e informando sobre eventos importantes.
Uma notificação Push consiste em um título, um corpo de mensagem e dados opcionais (payload). Ao contrário de SMS, as notificações Push são gratuitas para o usuário e são entregues através da infraestrutura de serviços em nuvem — FCM para Android e APNS para iOS. Os principais objetivos das notificações Push são: aumentar o engajamento, informar sobre eventos e trazer o usuário de volta ao aplicativo.
As estatísticas de uso mostram que notificações Push configuradas corretamente aumentam a retenção do aplicativo em 30–60%. No entanto, a frequência excessiva de notificações leva a cancelamentos de inscrição — mais de 60% dos usuários desativam as notificações se forem enviadas mais de três vezes por dia.
Um sistema Push inclui três componentes: o servidor do aplicativo, o serviço de plataforma (FCM/APNS) e o aplicativo cliente no dispositivo. O servidor envia uma solicitação ao serviço de plataforma, que entrega a notificação ao dispositivo de destino através de uma conexão persistente com o sistema operacional.
O mecanismo de entrega das notificações Push é baseado em uma conexão persistente entre o dispositivo e o serviço de plataforma. O sistema operacional mantém um canal de comunicação criptografado através do qual todas as mensagens Push passam.
No primeiro lançamento, o aplicativo solicita permissão para enviar notificações e recebe um token único de dispositivo do FCM ou APNS. Este token é uma string de até 4 KB que identifica exclusivamente a instância do aplicativo. O token muda quando o aplicativo é reinstalado ou o dispositivo é restaurado de um backup.
class FirebaseMessagingService :
FirebaseMessagingService() {
override fun onNewToken(token: String) {
sendTokenToServer(token)
}
override fun onMessageReceived(
message: RemoteMessage
) {
showNotification(message.notification)
}
}
O servidor do aplicativo envia uma solicitação HTTP para a API do FCM ou API do APNS, especificando o token de destino, título, corpo e dados adicionais. O serviço de plataforma responde com um status de entrega: sucesso, token inválido (o dispositivo desinstalou o aplicativo) ou limite de taxa excedido.
fetch("https://fcm.googleapis.com/fcm/send", {
method: "POST",
headers: {
"Authorization": "key=AIzaSy...",
"Content-Type": "application/json"
},
body: JSON.stringify({
to: "device_token_here",
notification: {
title: "Nova mensagem",
body: "Você tem uma nova notificação!"
}
})
})
A escolha entre FCM e APNS depende da plataforma alvo. FCM suporta Android e iOS, enquanto APNS suporta apenas o ecossistema Apple. Vamos examinar as principais diferenças importantes para o desenvolvimento de aplicativos móveis multiplataforma.
FCM é um serviço do Google que funciona sobre o Google Play Services. Ele suporta dois esquemas de entrega: notificações com exibição automática e notificações de dados que o aplicativo gerencia sozinho. FCM é gratuito e não tem limites na quantidade de mensagens enviadas.
APNS é o serviço da Apple com suporte para anexos multimídia (imagens, vídeo, áudio) de até 10 MB. O envio via APNS requer um certificado TLS ou chave de autenticação. APNS limita a frequência de envio para um único dispositivo — no máximo 150 notificações por minuto, após o que a limitação de taxa é ativada.
| Característica | FCM | APNS |
|---|---|---|
| Plataformas | Android, iOS, Web | iOS, macOS, watchOS |
| Requisitos | Google Play Services | Apple Developer Program |
| Mídia | até 4 KB (dados) | até 10 MB (anexos) |
| Prioridade | normal/alta | imediata/economia de energia |
| Custo | gratuito | gratuito (conta necessária) |
As notificações Push são classificadas pelo método de exibição e propósito. Entender os tipos ajuda a escolher a estratégia correta para cada cenário de interação com o usuário.
O tipo mais comum — uma notificação exibida com um título e corpo. O sistema operacional a mostra automaticamente na área de notificações, na tela de bloqueio e como banner. O desenvolvedor pode configurar som, vibração, emblema do ícone e botões de ação para ações diretas (responder, abrir, dispensar).
Notificações de dados contêm apenas payload sem exibição visual. O aplicativo as processa em segundo plano: sincroniza dados, atualiza cache ou inicia downloads. No Android, as notificações de dados são entregues de forma confiável; no iOS, apenas quando o aplicativo está ativo ou através de background fetch.
Sistemas operacionais móveis modernos suportam notificações rich e multimídia com imagens, GIFs, vídeo e áudio. No iOS, isso é implementado através de UNNotificationAttachment; no Android, através de BigPictureStyle e InboxStyle para personalizar a aparência da notificação na área de notificações do sistema.
Notificações silenciosas não são exibidas ao usuário e são usadas para sincronização em segundo plano. No iOS, elas têm alta prioridade para tarefas como atualização de dados antes de abrir o aplicativo. O Android as trata como notificações de dados com prioridade mínima.
A configuração de notificações Push requer ações nos níveis de infraestrutura, servidor e código do cliente. Vamos ver o processo típico para um projeto móvel multiplataforma.
Para Android, você precisa criar um projeto no Firebase Console, adicionar google-services.json ao projeto e configurar o FirebaseMessagingService. O token do dispositivo é obtido através de FirebaseInstanceId ou FirebaseMessaging.getInstance().token, após o que é enviado ao servidor via API no primeiro lançamento ou quando muda.
Para iOS, é necessária uma assinatura do Apple Developer Program, criação de um certificado Push ou chave APNS no Developer Portal, e ativação da capacidade Push Notifications no Xcode. O registro de notificação é feito através de UIApplication.shared.registerForRemoteNotifications, recebendo o deviceToken no AppDelegate.
import UIKit
import UserNotifications
@main
class AppDelegate: UIResponder,
UIApplicationDelegate {
func application(
_ application: UIApplication,
didRegisterForRemoteNotificationsWithDeviceToken
deviceToken: Data
) {
let token = deviceToken
.map { String.format("%02x", $0) }
.joined()
// enviar token para seu servidor
}
}
No lado do servidor, as notificações Push são enviadas através da REST API ou Admin SDK. FCM usa o Firebase Admin SDK (disponível para Node.js, Java, Python, Go), enquanto APNS usa bibliotecas pusher (pushy para Java, apn2 para Node.js). Recomenda-se armazenar tokens em um banco de dados com carimbo de data/hora da última atualização.
A segurança das notificações Push é criticamente importante, pois dados confidenciais podem ser transmitidos através delas. Ambas as plataformas fornecem mecanismos básicos de proteção, mas o desenvolvedor deve usá-los corretamente.
O payload de uma notificação Push pode conter dados pessoais dos usuários: nomes, valores de transações, links de mensagens. Mesmo que o canal de comunicação entre FCM/APNS e o dispositivo seja criptografado, os dados podem ser interceptados no nível do aplicativo se um software de terceiros interceptar a notificação. Recomenda-se criptografar o payload sensível no servidor usando AES-256 e descriptografá-lo no dispositivo usando uma chave armazenada no Keychain (iOS) ou EncryptedSharedPreferences (Android).
O token do dispositivo é um identificador de sessão que pode ser comprometido se o dispositivo for hackeado ou o tráfego interceptado. O servidor do aplicativo deve validar os tokens antes de enviar: verificá-los contra o banco de dados, rastrear tokens inativos e removê-los em erros repetidos de InvalidToken. FCM e APNS retornam o status InvalidRegistration para tokens inválidos — não o ignore.
Sem controle de frequência, as notificações Push podem se tornar uma ferramenta de spam que irrita os usuários e reduz a retenção. Defina limites no servidor: no máximo 5 notificações por hora para um único usuário e no máximo 3 mensagens idênticas. Para notificações transacionais (confirmação de pedido, alteração de senha), os limites podem ser maiores — até 10 por hora, pois contêm informações criticamente importantes. Use limitação de taxa no nível da API de envio para que um invasor não possa disparar notificações em massa através do seu servidor.
Perguntas frequentes
Sim, mas conexão direta ao APNS não é suportada no Android — dispositivos sem Google Play Services usam alternativas como Huawei Mobile Services (HMS) e conexões WebSocket próprias. No entanto, o FCM continua sendo o padrão para a maioria dos aplicativos devido à sua gratuidade e confiabilidade.
FCM e APNS armazenam a última notificação em seus servidores e a entregam quando a conexão é restaurada. Cada dispositivo armazena apenas a última notificação de cada aplicativo, portanto, mensagens intermediárias são perdidas durante ausência prolongada de rede.
As razões mais comuns são um certificado Push expirado (válido por 1 ano), um token de dispositivo inválido, notificações desativadas nas configurações ou modo de baixo consumo ativado. Verifique o certificado no Apple Developer Console e certifique-se de que o aplicativo solicite permissão através do UNUserNotificationCenter.
No Android, use PendingIntent no NotificationCompat.Builder com rastreamento de abertura via Intent. No iOS, use o método UNUserNotificationCenterDelegate.userNotificationCenter(_:didReceive:withCompletionHandler:). O FCM fornece relatórios de entrega e abertura para cada notificação enviada.
Minimamente — notificações Push não mantêm uma conexão constante; o SO usa um único canal do sistema para todos os aplicativos, o que minimiza o consumo total de energia. O envio frequente (a cada 5 minutos) consome mais energia ao despertar o dispositivo do modo de suspensão. Notificações silenciosas no iOS consomem mais bateria devido à ativação do aplicativo em segundo plano para processar os dados recebidos.
Resumo
Vamos desenvolver um aplicativo móvel chave na mão
A IT Sectr cria aplicativos para iOS e Android para startups e empresas desde 2017. Nós vamos aconselhá-lo e propor a melhor solução.
Leia também