Canais e Provedores de Notificação
Pilar: 03 — Notificações
Status: 🟢 Implementado (Push FCM / Notifee) · 🔵 Planejado (Email / SMS)
Última Revisão Técnica: 2026-08-03
Módulos Conectados:gatein-server(app/core/firebase.py),gatein-app(src/services/notifications/notifee.js)
1. Visão Geral dos Canais Multi-Provedor
O ecossistema Gatein adota uma estratégia de múltiplos canais de saída para garantir a entrega das mensagens operacionais:
graph LR
SERVER[Gatein Server] --> FCM[Firebase Cloud Messaging]
SERVER -.->|Planejado| SES[AWS SES / Email Transacional]
SERVER -.->|Planejado| SMS[Provedor SMS / Zenvia]
FCM -->|Push Notification| ANDROID[Android Device / Notifee Channels]
FCM -->|Push Notification| IOS[iOS Device / APNs]
2. Configuração dos Canais Nativo Android (Notifee)
No sistema operacional Android, as notificações push devem ser vinculadas a um Notification Channel configurado previamente. O aplicativo mobile inicializa os seguintes canais nativos:
// src/services/notifications/notifee.js
import notifee, { AndroidImportance, AndroidVisibility } from '@notifee/react-native';
export async function setupNotificationChannels() {
await notifee.createChannel({
id: 'checkin',
name: 'Status de Check-in',
importance: AndroidImportance.HIGH,
visibility: AndroidVisibility.PUBLIC,
sound: 'checkin_approved_sound',
vibration: true,
});
await notifee.createChannel({
id: 'appointment',
name: 'Agendamentos e Lembretes',
importance: AndroidImportance.DEFAULT,
visibility: AndroidVisibility.PUBLIC,
});
await notifee.createChannel({
id: 'security',
name: 'Alertas de Segurança SOS',
importance: AndroidImportance.HIGH,
visibility: AndroidVisibility.PUBLIC,
sound: 'alarm_siren',
vibrationPattern: [300, 500, 300, 500],
});
}
3. Comportamento por Estado do Aplicativo
| Estado do App Mobile | Receptor de Evento | Comportamento de Exibição |
|---|---|---|
| Foreground (Aberto na Tela) | notifee.onForegroundEvent | Notifee intercepta e desenha a notificação no banner superior sem interromper o uso |
| Background (Minimizado) | messaging().setBackgroundMessageHandler | Notifee/FCM coloca a notificação no System Tray. Clique aciona deep link |
| Killed (Fechado) | Native FCM Service | O SO desenha o banner nativo. Ao tocar, o app é aberto e lê getInitialNotification() |
4. Estratégia de Fallback por Canais Secundários (Planejado)
Para falhas de entrega Push (ex: motorista sem internet ou com economia de bateria agressiva):
- Push FCM: Tentativa primária síncrona.
- Email Transacional: Se a notificação transacional for de alta criticidade (ex: alteração de data de agendamento) e o motorista possuir e-mail cadastrado, dispara cópia em até 15 minutos.
- SMS Informativo: Reservado exclusivamente para alertas de emergência ou validação de código OTP.