Implementación de Notificaciones en Blog con Firebase

Clase 29 de 32Curso de Firebase 5 para Web

Resumen

¿Cómo agregar notificaciones en un blog con Firebase?

¡La integración de notificaciones en tiempo real es fundamental para mantener a tus usuarios informados sobre actualizaciones importantes! Usando Firebase Cloud Messaging, podemos enviar notificaciones a los usuarios cada vez que se publica un nuevo post en tu blog. Aquí te mostraremos paso a paso cómo implementar este sistema para mejorar la experiencia de tus usuarios.

¿Qué pasos iniciales se deben seguir para habilitar las notificaciones?

Primero, comenzamos agregando el script de messaging de Firebase. Este script permite usar los servicios de mensajería en la aplicación web. Aquí está el paso a paso:

  1. Incluir el script de messaging:

    1. Abre la documentación de Firebase para encontrar el script de messaging.
    2. Copia el script y pégalo en el archivo index.html de tu proyecto, preferiblemente junto al script de storage si ya lo tienes.
    <script src="https://www.gstatic.com/firebasejs/x.y.z/firebase-messaging.js"></script>
    
  2. Crear un Service Worker:

    • Este archivo ejecuta funciones en segundo plano. Crea un archivo llamado notificaciones-sw.js y agrégale las siguientes líneas:
    importScripts('https://www.gstatic.com/firebasejs/x.y.z/firebase-app.js');
    importScripts('https://www.gstatic.com/firebasejs/x.y.z/firebase-messaging.js');
    
  3. Agregar un archivo manifest.json:

    • Incluye información sobre tu aplicación para permitir que el navegador gestione las notificaciones. Dentro, asegúrate de incluir el campo gcm_sender_id:
    {
      "gcm_sender_id": "103953800507"
    }
    
  4. Registrar el Service Worker:

    • Dentro de tu archivo general.js o el archivo principal de JavaScript, registra el Service Worker para que el navegador lo ejecute:
    navigator.serviceWorker.register('/notificaciones-sw.js')
      .then(registration => {
        console.log('ServiceWorker registrado:', registration);
        firebase.messaging().useServiceWorker(registration);
      })
      .catch(err => {
        console.error('Error al registrar el Service Worker:', err);
      });
    

¿Cómo se configuran las credenciales de notificación?

Para que Firebase sepa a qué proyecto enviar las notificaciones, necesitas registrar las credenciales web:

  1. Configurar la autenticación de messaging:

    • Ve a la configuración de tu proyecto en Firebase y genera los certificados necesarios. Usa el método usePublicVapidKey para registrar estas credenciales:
    const messaging = firebase.messaging();
    messaging.usePublicVapidKey('YOUR_PUBLIC_VAPID_KEY_HERE');
    
  2. Solicitar permisos al usuario:

    • Es crucial pedir a los usuarios que den permiso para recibir notificaciones. Esto se logra así:
    messaging.requestPermission()
      .then(() => {
        console.log('Permiso de notificaciones otorgado');
        return messaging.getToken();
      })
      .then(token => {
        console.log('Token de notificación:', token);
        // Guarda el token en Firestore...
      })
      .catch(err => {
        console.error('Error al obtener el permiso o token:', err);
      });
    

¿Cómo se gestionan los tokens en Firestore?

Una vez que obtienes el token de notificación, es esencial almacenarlo para futuras referencias. Aquí es cómo gestionar los tokens:

  1. Almacenar el token en una colección:
    • Guarda el token de cada usuario en una colección llamada tokens para poder identificar a qué usuarios enviar las notificaciones.
    const db = firebase.firestore();
    db.collection('tokens').doc(token).set({ token })
      .then(() => {
        console.log('Token registrado en Firestore');
      })
      .catch(err => {
        console.error('Error al registrar el token en Firestore:', err);
      });
    

Con estos pasos, has configurado con éxito el envío de notificaciones en tiempo real en tu blog utilizando Firebase Cloud Messaging. Estos cambios permiten que tus usuarios reciban alertas a medida que publicas nuevo contenido, mejorando notablemente el compromiso y la interacción con tu plataforma. Sigue aprendiendo y mejorando tus habilidades; ¡el mundo digital siempre tiene algo nuevo que ofrecer!