🔔 Cap 16: Alertas de Batalha: Notificações
🎯 Objetivo da Aula: Ao final desta aula, você entenderá como funcionam as Notificações Push. Você aprenderá a configurar o Firebase (FCM) para que seu app receba avisos mesmo quando estiver fechado, informando o jogador sobre novos desafios ou itens.
🏢 O Cenário Prático (Seu Desafio): Seu jogo é divertido, mas os jogadores esquecem de entrar! O desafio é criar o Sistema de Alerta: sempre que um novo evento começar, o celular do jogador deve vibrar e mostrar a mensagem: “⚔️ Nova Batalha na Arena! Clique para participar”.
🧠 Fundamentos: A Teoria Traduzida
📖 Dicionário do Programador
- Notificação Push: É uma mensagem enviada da internet para o celular. Ela “empurra” a informação para o usuário.
- Firebase FCM: É o serviço do Google que faz a entrega dessas mensagens no mundo todo de forma gratuita.
- Token: É como o “Endereço” exclusivo do seu celular. Para o servidor te enviar um alerta, ele precisa saber o seu Token.
🎨 Padrão de Serviço
No Android, as notificações são processadas por um Service (um código que roda escondido, sem tela). Ele deve morar na pasta data/network/ ou em uma pasta services/.
graph TD A[Servidor do Game] -->|Envia Alerta| B[Firebase Cloud Messaging] B -->|Localiza Celular| C[App do Jogador] C -->|Gera Popup| D[Aviso na Tela]
🏗️ Construindo o Projeto (Checklist Studio)
Para usar notificações, você deve:
- Criar um projeto no Firebase Console.
- Baixar o arquivo
google-services.jsone colocar na pastaapp/do seu projeto. - Declarar o serviço de mensagem no seu
AndroidManifest.xml.
📖 Exemplo Passo a Passo: O Recebedor de Alertas
Crie a classe que fica “vigiando” a chegada de mensagens:
package br.com.curso.pokedex.services
import com.google.firebase.messaging.FirebaseMessagingService
import com.google.firebase.messaging.RemoteMessage
class AlertaService : FirebaseMessagingService() {
override fun onMessageReceived(remoteMessage: RemoteMessage) {
// Quando a mensagem chega, o código abaixo é executado
val titulo = remoteMessage.notification?.title
println("Novo Alerta Recebido: $titulo")
}
}🛠️ Prática Obrigatória 1: Pesquise e anote: O que é um “Canal de Notificação” (Notification Channel) e por que ele é obrigatório no Android moderno?
🛠️ Prática Obrigatória 2:
No seu AndroidManifest.xml, adicione a declaração do serviço AlertaService. Certifique-se de usar o caminho completo do pacote: br.com.curso.pokedex.services.AlertaService.
🔑 Gabarito Passo a Passo:
Exercício 1: O Canal de Notificação serve para organizar os alertas. O usuário pode, por exemplo, silenciar os “Alertas de Marketing” mas manter ativos os “Alertas de Batalha”.
Exercício 2 (XML):
<service
android:name="br.com.curso.pokedex.services.AlertaService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>📤 Instruções de Entrega (Microsoft Teams):
- Envie sua pesquisa sobre os Canais de Notificação.
- Envie o print do seu Manifesto configurado.
- Submeta no canal de tarefas.