Notificações push
Envie notificações push pelo Firebase Cloud Messaging. Configure o FCM, crie canais de notificação, crie notificações com ações e trate a entrega em primeiro e segundo plano.
Notificações push é uma aula grátis de Android Academy no CoddyKit. Esta é a aula 4 de 6. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Android Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Android Academy inclui 6 aulas no total.
O que são notificações push?
As notificações push permitem que seu servidor envie mensagens aos usuários mesmo quando o aplicativo não está em primeiro plano. Usos comuns:
- Alertas de novas mensagens
- Atualizações do status de pedidos
- Notícias de última hora
- Lembretes e promoções
No Android, o Firebase Cloud Messaging (FCM) é o serviço padrão de entrega de notificações push.
Visão geral do FCM
Fluxo do Firebase Cloud Messaging (FCM):
- O aplicativo se registra no FCM na primeira inicialização → recebe um token do dispositivo
- O aplicativo envia o token ao seu servidor
- Quando o senhor quiser enviar uma notificação, seu servidor enviará uma mensagem ao FCM
- O FCM entrega a mensagem ao dispositivo
O FCM é gratuito, confiável e funciona mesmo quando o aplicativo é encerrado.
Adicionando o Firebase ao projeto
Etapas para adicionar o Firebase:
- Acesse o Firebase Console → Adicionar projeto → Adicionar aplicativo Android
- Registre seu aplicativo com o nome do pacote
- Baixe
google-services.jsone coloque-o emapp/ - Adicione os plug-ins e as dependências
// project/build.gradle:
buildscript {
dependencies { classpath 'com.google.gms:google-services:4.4.1' }
}
// app/build.gradle:
plugins { id 'com.google.gms.google-services' }
dependencies {
implementation platform('com.google.firebase:firebase-bom:32.7.4')
implementation 'com.google.firebase:firebase-messaging-ktx'
}Permissão do FCM (Android 13+)
A partir do Android 13 (API 33), o senhor deve solicitar a permissão POST_NOTIFICATIONS em tempo de execução — assim como uma permissão perigosa:
<!-- AndroidManifest.xml -->
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
// In Activity (Android 13+):
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
requestPermissionLauncher.launch(android.Manifest.permission.POST_NOTIFICATIONS)
}FirebaseMessagingService
Crie um serviço que trate as mensagens FCM recebidas e as atualizações de token:
class MyFirebaseService : FirebaseMessagingService() {
override fun onNewToken(token: String) {
// Send token to your backend to enable push delivery
sendTokenToServer(token)
}
override fun onMessageReceived(message: RemoteMessage) {
val title = message.notification?.title ?: "New Message"
val body = message.notification?.body ?: ""
showNotification(title, body)
}
}Registrando o serviço no manifesto
Declare o serviço em AndroidManifest.xml:
<service
android:name=".MyFirebaseService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>Canais de notificação (Android 8+)
Desde o Android 8 (Oreo), as notificações devem ser atribuídas a um canal. Os usuários podem controlar o som, a vibração e a importância de cada canal:
fun createNotificationChannel(context: Context) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
val channel = NotificationChannel(
"messages_channel", // channel ID
"Messages", // user-visible name
NotificationManager.IMPORTANCE_HIGH
).apply {
description = "Incoming message notifications"
enableVibration(true)
}
val manager = context.getSystemService(NotificationManager::class.java)
manager.createNotificationChannel(channel)
}
}Criando e exibindo uma notificação
Use NotificationCompat.Builder para garantir compatibilidade entre as versões do Android:
fun showNotification(context: Context, title: String, body: String) {
val intent = Intent(context, MainActivity::class.java)
val pendingIntent = PendingIntent.getActivity(
context, 0, intent,
PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
)
val notification = NotificationCompat.Builder(context, "messages_channel")
.setSmallIcon(R.drawable.ic_notification)
.setContentTitle(title)
.setContentText(body)
.setPriority(NotificationCompat.PRIORITY_HIGH)
.setAutoCancel(true) // dismiss on tap
.setContentIntent(pendingIntent) // open app on tap
.build()
NotificationManagerCompat.from(context)
.notify(System.currentTimeMillis().toInt(), notification)
}Notificação com ações
Adicione botões de ação às notificações para que os usuários possam agir sem abrir o aplicativo:
val replyIntent = Intent(context, ReplyReceiver::class.java)
val replyPending = PendingIntent.getBroadcast(
context, 1, replyIntent,
PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
)
val notification = NotificationCompat.Builder(context, "messages_channel")
.setSmallIcon(R.drawable.ic_notification)
.setContentTitle("New message from Alice")
.setContentText("Hey, are you coming?")
.addAction(R.drawable.ic_reply, "Reply", replyPending)
.addAction(R.drawable.ic_dismiss, "Dismiss", null)
.build()Tratamento em primeiro e segundo plano
O FCM se comporta de maneira diferente dependendo do estado do aplicativo:
- Aplicativo em primeiro plano —
onMessageReceived()é chamado; o senhor cria e exibe a notificação por conta própria - Aplicativo em segundo plano ou encerrado — o FCM exibe automaticamente a notificação do conteúdo
notification;onMessageReceivednão é chamado
Coloque os dados adicionais no conteúdo data (não em notification) para sempre recebê-los em onMessageReceived.
Obtendo o token do FCM
Recupere o token atual do FCM para enviá-lo ao seu servidor:
FirebaseMessaging.getInstance().token.addOnCompleteListener { task ->
if (!task.isSuccessful) {
Log.w("FCM", "Fetching token failed", task.exception)
return@addOnCompleteListener
}
val token = task.result
Log.d("FCM", "Token: $token")
// Send token to your server
sendTokenToServer(token)
}Verificação rápida
O que acontece quando seu aplicativo está em segundo plano e o FCM entrega uma mensagem com um conteúdo 'notification'?
Recapitulação: notificações push
Notificações push com FCM no Android:
- Adicione o Firebase,
google-services.jsonefirebase-messaging-ktx - Solicite
POST_NOTIFICATIONSno Android 13+ - Crie
FirebaseMessagingService→onNewToken+onMessageReceived - Crie um
NotificationChannelpara o Android 8+ - Crie notificações com
NotificationCompat.Builder - Use o conteúdo data para sempre recebê-lo em
onMessageReceived
Próximo: agende tarefas em segundo plano com o WorkManager.
Perguntas Frequentes
A aula “Notificações push” é grátis?
Sim — o texto completo de “Notificações push” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Android Academy, atualize para CoddyKit PRO. O curso de Android Academy inclui 6 aulas no total.
O que vou aprender em “Notificações push”?
Envie notificações push pelo Firebase Cloud Messaging. Configure o FCM, crie canais de notificação, crie notificações com ações e trate a entrega em primeiro e segundo plano. Você pratica Android Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Android Academy?
Nenhuma experiência prévia é necessária. Android Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 6.
Quanto tempo leva a aula “Notificações push”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Android Academy?
Sim. Cada aula de Android Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Retrofit e APIs REST
- Carregamento de imagens com Coil
- Tratamento de erros e experiência do usuário
- Notificações push
- WorkManager e tarefas em segundo plano
- Publicação na Play Store