0Pricing
Android Academy · Aula

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):

  1. O aplicativo se registra no FCM na primeira inicialização → recebe um token do dispositivo
  2. O aplicativo envia o token ao seu servidor
  3. Quando o senhor quiser enviar uma notificação, seu servidor enviará uma mensagem ao FCM
  4. 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:

  1. Acesse o Firebase Console → Adicionar projeto → Adicionar aplicativo Android
  2. Registre seu aplicativo com o nome do pacote
  3. Baixe google-services.json e coloque-o em app/
  4. 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; onMessageReceived nã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.json e firebase-messaging-ktx
  • Solicite POST_NOTIFICATIONS no Android 13+
  • Crie FirebaseMessagingService → onNewToken + onMessageReceived
  • Crie um NotificationChannel para 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

  1. Retrofit e APIs REST
  2. Carregamento de imagens com Coil
  3. Tratamento de erros e experiência do usuário
  4. Notificações push
  5. WorkManager e tarefas em segundo plano
  6. Publicação na Play Store
← Voltar para Android Academy