Supabase no envía notificaciones push automáticamente cuando sucede algo en la base de datos. No existe una llamada supabase.notifications.send(). Para enviar una debes construir el flujo: un trigger de Postgres, una Edge Function, credenciales de FCM y APNs, tokens de dispositivo y código para decidir quién recibe el mensaje.
Ese enfoque funciona y está bien documentado. Esta guía explica qué requiere y una alternativa gestionada. Si trabajas en Flutter, consulta la guía de Flutter; también existen guías en inglés para React Native, Expo, Capacitor, iOS y Android.
Qué necesitas para enviar notificaciones push
Cada push necesita cuatro elementos: un token de dispositivo, un lugar para guardarlo, un trigger que decida cuándo enviar y un servicio de entrega que llegue al dispositivo —FCM para Android y APNs para iOS—. Esta guía trata de conectar esas piezas con Supabase.
El enfoque manual
Sin una herramienta, añadir un único tipo de notificación a una app Supabase implica:
- Guardar tokens de dispositivo. Crea una columna o tabla para ellos y regístralos o elimínalos al iniciar y cerrar sesión.
- Escribir un trigger de Postgres en la tabla relevante, por ejemplo
AFTER INSERToAFTER UPDATE. - Llamar a una Edge Function desde el trigger, normalmente con
pg_neto un webhook de base de datos, porque Postgres no puede llamar directamente a FCM o APNs. - Resolver el destinatario en la función. Puede ser un usuario, usuarios relacionados mediante un join o todos los usuarios; la lógica SQL o JS cambia para cada tipo.
- Llamar a FCM y APNs, formatear cada payload y gestionar fallos, tokens caducados y reintentos.
- Repetir los pasos 2 a 5 para cada notificación nueva y para cada plataforma.
Ningún paso es difícil por separado. La carga aparece al acumular una Edge Function y una consulta de destinatarios por cada notificación. A cambio, todo queda bajo tu control y la lógica vive en tus migraciones.
El enfoque gestionado
Entrig sustituye los pasos 2 a 5 por configuración. Una notificación tiene tres partes:
- Trigger: tabla y evento (
INSERT,UPDATE,DELETE) con una condición opcional. - Users: cómo encontrar al destinatario con Direct (seguir claves foráneas a un usuario), Indirect via Join Table (distribuir mediante una tabla de unión) o Broadcast (todos los usuarios, con filtro opcional).
- Message: título, cuerpo y campos del payload, con
{{placeholders}}tomados de la fila que activó el trigger.
Al guardar, Entrig genera e instala el trigger y la función de Postgres en tu proyecto Supabase. No necesitas escribir ni desplegar una Edge Function. En el cliente, el SDK se inicializa con una clave API y registra el dispositivo con el ID de usuario al iniciar sesión; la entrega a FCM y APNs la realiza Entrig.
Lo que sigue siendo necesario
Un servicio gestionado no elimina los requisitos de plataforma. En ambos casos debes:
- Crear un proyecto Firebase y generar un JSON de cuenta de servicio para Android.
- Obtener una clave de autenticación APNs para entregas iOS nativas.
- Activar la capacidad push y los modos en segundo plano en el proyecto iOS.
- Pedir permiso de notificaciones y gestionar toques y enlaces profundos.
- Mantener en la base de datos un ID que coincida con el usado al registrar dispositivos.
Manual frente a Entrig
| Manual | Entrig | |
|---|---|---|
| Nueva notificación | SQL, consulta de destinatarios, lógica Edge Function y despliegue | Se configura en el panel y queda activa al guardar |
| Instalación del trigger | La escribes y migras tú | Se genera e instala al guardar |
| Backend | Una Function o servidor que debes mantener | Ninguno propio; Entrig ejecuta la entrega |
| Tokens | Los guardas, actualizas y depuras | El SDK los registra; Entrig invalida tokens rechazados |
| Reintentos | Implementas la lógica para FCM/APNs | Los errores transitorios se reintentan automáticamente |
Guías por plataforma
Cada guía crea el mismo chat de grupo y tres notificaciones: un miembro que se une, un mensaje y un grupo nuevo.