En este tema, aprenderemos cómo enviar notificaciones utilizando Firebase Cloud Messaging (FCM). Las notificaciones son una herramienta poderosa para mantener a los usuarios comprometidos y actualizados con la información relevante de tu aplicación. Vamos a cubrir los siguientes puntos:
- Configuración inicial de FCM
- Envío de notificaciones desde la consola de Firebase
- Envío de notificaciones desde el servidor
- Personalización de notificaciones
- Configuración inicial de FCM
Antes de enviar notificaciones, es necesario configurar Firebase Cloud Messaging en tu proyecto. Sigue estos pasos:
Paso 1: Agregar Firebase a tu proyecto
-
Crear un proyecto en Firebase Console:
- Ve a Firebase Console.
- Haz clic en "Agregar proyecto" y sigue las instrucciones para crear un nuevo proyecto.
-
Agregar la aplicación a Firebase:
- Selecciona tu proyecto y haz clic en "Agregar aplicación" (iOS, Android o Web).
- Sigue las instrucciones para registrar tu aplicación y descargar el archivo de configuración (
google-services.json
para Android oGoogleService-Info.plist
para iOS).
-
Incluir el archivo de configuración en tu proyecto:
- Para Android, coloca
google-services.json
en el directorioapp/
. - Para iOS, arrastra
GoogleService-Info.plist
a tu proyecto en Xcode.
- Para Android, coloca
-
Agregar dependencias de Firebase:
- Para Android, agrega las siguientes dependencias en tu archivo
build.gradle
:implementation 'com.google.firebase:firebase-messaging:23.0.0'
- Para iOS, usa CocoaPods para instalar Firebase Messaging:
pod 'Firebase/Messaging'
- Para Android, agrega las siguientes dependencias en tu archivo
Paso 2: Configurar permisos
-
Android:
- Asegúrate de que tu
AndroidManifest.xml
contenga los permisos necesarios:<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.WAKE_LOCK"/> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
- Asegúrate de que tu
-
iOS:
- Solicita permiso para recibir notificaciones en tu
AppDelegate
:import Firebase import UserNotifications @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate { func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { FirebaseApp.configure() UNUserNotificationCenter.current().delegate = self let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound] UNUserNotificationCenter.current().requestAuthorization(options: authOptions, completionHandler: {_, _ in }) application.registerForRemoteNotifications() return true } }
- Solicita permiso para recibir notificaciones en tu
- Envío de notificaciones desde la consola de Firebase
La forma más sencilla de enviar notificaciones es a través de la consola de Firebase. Sigue estos pasos:
-
Acceder a la consola de Firebase:
- Ve a Firebase Console.
- Selecciona tu proyecto.
-
Navegar a Cloud Messaging:
- En el menú de la izquierda, selecciona "Cloud Messaging".
-
Crear un nuevo mensaje:
- Haz clic en "Enviar tu primer mensaje" o "Nuevo mensaje".
- Completa los campos necesarios:
- Título: El título de la notificación.
- Texto: El cuerpo de la notificación.
- Segmentación: Selecciona los destinatarios (todos los usuarios, usuarios específicos, etc.).
-
Enviar el mensaje:
- Haz clic en "Siguiente" y luego en "Revisar".
- Revisa los detalles y haz clic en "Publicar".
- Envío de notificaciones desde el servidor
Para enviar notificaciones desde tu servidor, necesitas hacer una solicitud HTTP POST a la API de FCM. Aquí tienes un ejemplo en Node.js:
Paso 1: Obtener la clave del servidor
-
Acceder a la configuración del proyecto:
- En la consola de Firebase, ve a "Configuración del proyecto".
- Selecciona la pestaña "Cloud Messaging".
-
Copiar la clave del servidor:
- Copia la clave del servidor (Server key).
Paso 2: Enviar la notificación
-
Instalar dependencias:
- Asegúrate de tener
axios
instalado:npm install axios
- Asegúrate de tener
-
Enviar la solicitud:
- Aquí tienes un ejemplo de cómo enviar una notificación:
const axios = require('axios'); const sendNotification = async () => { const serverKey = 'YOUR_SERVER_KEY'; const fcmUrl = 'https://fcm.googleapis.com/fcm/send'; const message = { to: 'DEVICE_TOKEN', notification: { title: 'Hello', body: 'World' } }; try { const response = await axios.post(fcmUrl, message, { headers: { 'Content-Type': 'application/json', 'Authorization': `key=${serverKey}` } }); console.log('Notification sent successfully:', response.data); } catch (error) { console.error('Error sending notification:', error); } }; sendNotification();
- Aquí tienes un ejemplo de cómo enviar una notificación:
- Personalización de notificaciones
Puedes personalizar las notificaciones para mejorar la experiencia del usuario. Aquí hay algunas opciones:
-
Iconos y sonidos personalizados:
- Puedes especificar un icono y un sonido personalizados en el objeto
notification
:const message = { to: 'DEVICE_TOKEN', notification: { title: 'Hello', body: 'World', icon: 'your_icon_name', sound: 'your_sound_name' } };
- Puedes especificar un icono y un sonido personalizados en el objeto
-
Datos adicionales:
- Puedes enviar datos adicionales en el objeto
data
:const message = { to: 'DEVICE_TOKEN', notification: { title: 'Hello', body: 'World' }, data: { key1: 'value1', key2: 'value2' } };
- Puedes enviar datos adicionales en el objeto
Ejercicio práctico
Ejercicio 1: Enviar una notificación desde la consola de Firebase
- Accede a la consola de Firebase y selecciona tu proyecto.
- Navega a Cloud Messaging y crea un nuevo mensaje.
- Completa los campos con un título y un texto de tu elección.
- Envía la notificación y verifica que se reciba en tu dispositivo.
Ejercicio 2: Enviar una notificación desde el servidor
- Configura un servidor Node.js y asegúrate de tener
axios
instalado. - Usa el código proporcionado para enviar una notificación a un dispositivo específico.
- Personaliza la notificación con un icono y un sonido personalizados.
Soluciones
Solución al Ejercicio 1
- Accede a la consola de Firebase y selecciona tu proyecto.
- Navega a Cloud Messaging y haz clic en "Nuevo mensaje".
- Completa los campos:
- Título: "Notificación de prueba"
- Texto: "Esta es una notificación de prueba"
- Haz clic en "Siguiente", revisa los detalles y haz clic en "Publicar".
Solución al Ejercicio 2
- Configura un servidor Node.js y asegúrate de tener
axios
instalado. - Usa el siguiente código para enviar una notificación:
const axios = require('axios'); const sendNotification = async () => { const serverKey = 'YOUR_SERVER_KEY'; const fcmUrl = 'https://fcm.googleapis.com/fcm/send'; const message = { to: 'DEVICE_TOKEN', notification: { title: 'Notificación de prueba', body: 'Esta es una notificación de prueba', icon: 'your_icon_name', sound: 'your_sound_name' } }; try { const response = await axios.post(fcmUrl, message, { headers: { 'Content-Type': 'application/json', 'Authorization': `key=${serverKey}` } }); console.log('Notification sent successfully:', response.data); } catch (error) { console.error('Error sending notification:', error); } }; sendNotification();
Conclusión
En esta sección, hemos aprendido cómo enviar notificaciones utilizando Firebase Cloud Messaging. Hemos cubierto la configuración inicial, el envío de notificaciones desde la consola de Firebase y desde el servidor, así como la personalización de las notificaciones. Con estos conocimientos, puedes mantener a tus usuarios informados y comprometidos con tu aplicación. En el próximo tema, aprenderemos cómo manejar las notificaciones en la aplicación.
Curso de Firebase
Módulo 1: Introducción a Firebase
Módulo 2: Autenticación de Firebase
- Introducción a la autenticación de Firebase
- Autenticación por correo electrónico y contraseña
- Autenticación de redes sociales
- Gestión de usuarios
Módulo 3: Base de datos en tiempo real de Firebase
- Introducción a la base de datos en tiempo real
- Lectura y escritura de datos
- Estructura de datos y reglas de seguridad
- Capacidades sin conexión
Módulo 4: Cloud Firestore
- Introducción a Cloud Firestore
- Modelo de datos de Firestore
- Operaciones CRUD
- Consultas avanzadas
- Reglas de seguridad
Módulo 5: Almacenamiento de Firebase
- Introducción al almacenamiento de Firebase
- Subida de archivos
- Descarga de archivos
- Metadatos de archivos y seguridad
Módulo 6: Mensajería en la nube de Firebase
- Introducción a la mensajería en la nube
- Envío de notificaciones
- Manejo de notificaciones
- Características avanzadas de mensajería
Módulo 7: Análisis de Firebase
Módulo 8: Funciones de Firebase
- Introducción a las funciones de Firebase
- Escritura de funciones
- Despliegue de funciones
- Activación de funciones
Módulo 9: Monitoreo de rendimiento de Firebase
- Introducción al monitoreo de rendimiento
- Configuración del monitoreo de rendimiento
- Análisis de datos de rendimiento
Módulo 10: Laboratorio de pruebas de Firebase
- Introducción al laboratorio de pruebas de Firebase
- Ejecución de pruebas
- Análisis de resultados de pruebas