Pular para o conteúdo principal

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 MobileReceptor de EventoComportamento de Exibição
Foreground (Aberto na Tela)notifee.onForegroundEventNotifee intercepta e desenha a notificação no banner superior sem interromper o uso
Background (Minimizado)messaging().setBackgroundMessageHandlerNotifee/FCM coloca a notificação no System Tray. Clique aciona deep link
Killed (Fechado)Native FCM ServiceO 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):

  1. Push FCM: Tentativa primária síncrona.
  2. 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.
  3. SMS Informativo: Reservado exclusivamente para alertas de emergência ou validação de código OTP.