Notificaciones push para Supabase sin Edge Functions

Entrig
Ib Entrig Team

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:

  1. Guardar tokens de dispositivo. Crea una columna o tabla para ellos y regístralos o elimínalos al iniciar y cerrar sesión.
  2. Escribir un trigger de Postgres en la tabla relevante, por ejemplo AFTER INSERT o AFTER UPDATE.
  3. Llamar a una Edge Function desde el trigger, normalmente con pg_net o un webhook de base de datos, porque Postgres no puede llamar directamente a FCM o APNs.
  4. 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.
  5. Llamar a FCM y APNs, formatear cada payload y gestionar fallos, tokens caducados y reintentos.
  6. 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

ManualEntrig
Nueva notificaciónSQL, consulta de destinatarios, lógica Edge Function y despliegueSe configura en el panel y queda activa al guardar
Instalación del triggerLa escribes y migras túSe genera e instala al guardar
BackendUna Function o servidor que debes mantenerNinguno propio; Entrig ejecuta la entrega
TokensLos guardas, actualizas y depurasEl SDK los registra; Entrig invalida tokens rechazados
ReintentosImplementas la lógica para FCM/APNsLos 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.

Frequently asked questions

¿Supabase tiene notificaciones push integradas?

No. Supabase no incluye un servicio de push ni una función supabase.notifications.send(). Debes conectar un trigger de Postgres a una Edge Function que llame a FCM y APNs, o usar un servicio gestionado como Entrig.

¿Puedo enviar push desde Supabase sin escribir una Edge Function?

Sí. Entrig genera e instala el trigger y la función de Postgres en tu proyecto Supabase y se encarga de la entrega; configuras la notificación en el panel en lugar de crear y desplegar tu propia Edge Function.

¿Qué plataformas son compatibles?

Flutter, React Native, Expo, Capacitor, iOS nativo y Android nativo, cada una con su SDK y guía paso a paso.