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

  1. Criar um projeto no Firebase Console.
  2. Baixar o arquivo google-services.json e colocar na pasta app/ do seu projeto.
  3. 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):

  1. Envie sua pesquisa sobre os Canais de Notificação.
  2. Envie o print do seu Manifesto configurado.
  3. Submeta no canal de tarefas.

Capitulo Anterior | Proximo Capitulo