onTokenRefresh: renovar tokens en Firebase
Clase 30 de 32 • Curso de Firebase 5 para Web
Contenido del curso
Consola Web de Administración
Autenticación de Usuarios
- 6

Servicios de autenticación de Firebase
06:30 min - 7

Crear usuarios con Firebase Authentication
13:12 min - 8

Autenticación de Usuarios con Firebase: Registro y Verificación de Email
15:02 min - 9

Autenticación con Google usando Firebase en aplicaciones web
06:22 min - 10

Login con Facebook en Firebase
09:47 min - 11

Gestión de Autenticación de Usuarios con Firebase
11:42 min - 12

Gestión de usuarios en consola Firebase
05:05 min - 13

Importar y exportar usuarios de Firebase
04:17 min
Gestión de la Base de Datos
- 14

Firestore vs Realtime Database: por qué migrar
08:36 min - 15
Comparación entre Realtime Database y Firestore de Firebase
02:11 min - 16

Habilitar Firestore en Firebase Console
09:53 min - 17

Cómo insertar datos en Firestore con validación
10:53 min - 18

Consultas en Tiempo Real con Firestore para Aplicaciones Web
15:01 min - 19

Operaciones avanzadas de Firestore
13:12 min - 20

Reglas de seguridad básicas en Firestore
08:07 min - 21

Creación y gestión de índices en Firestore para optimizar consultas
07:13 min
Almacenamiento de archivos
Hosting
Notificaciones Push
Conclusiones
Asegura una entrega confiable de notificaciones web con Firebase Messaging, registrando cada token en Firestore y gestionando alertas en foreground y background. Aquí verás cómo reaccionar al refresco de token, cómo mostrar un mensaje cuando el usuario está en la aplicación y cómo configurar el service worker para notificaciones del sistema.
¿Cómo asegurar el token actualizado en Firestore?
Mantener el token vigente es clave: puede cambiar si el usuario cierra el navegador o se limpia la caché. Cuando el token se refresca, hay que obtener el nuevo valor y reenviarlo a Firestore para conservar la capacidad de envío.
¿Qué hace onTokenRefresh en Messaging?
- Detecta cuando el token se renueva.
- Recupera el nuevo token con la misma lógica usada antes.
- Permite volver a registrarlo en Firestore.
// Escucha el refresco del token
messaging.onTokenRefresh(() => {
console.log('Token se ha renovado.');
messaging.getToken().then((token) => {
console.log('Token nuevo:', token);
// Reenviar a Firestore.
// registrarTokenEnFirestore(token);
});
});
¿Cómo registrar el nuevo token en la base de datos?
- Envía el token a Firestore tras el then.
- Informa en consola que el token cambió para facilitar la depuración por parte de developers.
function registrarTokenEnFirestore(token) {
// Ejemplo genérico: persiste el token en Firestore.
// firebase.firestore().collection('tokens').doc(token).set({ token });
}
¿Cómo recibir notificaciones en foreground con Messaging?
Cuando el usuario está activo en la app, las alertas se manejan con onMessage. El payload trae la información enviada por el servidor. La idea es mostrar un mensaje tipo toast con el título del nuevo post y una duración mayor para que se lea con calma.
¿Cómo usar onMessage para mostrar un toast?
- Captura el payload y muéstralo en UI.
- Mensaje recomendado: “Ya tenemos un nuevo post, revísalo. Se llama [título]”.
- Duración sugerida: 6 segundos.
messaging.onMessage((payload) => {
console.log('Mensaje en foreground:', payload);
const titulo = payload?.notification?.title || payload?.data?.title || '';
// Muestra *toast* por 6000 ms.
mostrarToast(`Ya tenemos un nuevo post, revísalo. Se llama ${titulo}`, 6000);
});
function mostrarToast(mensaje, duracionMs) {
// Implementación del toast propia de tu UI.
}
¿Cómo configurar notificaciones en background en el service worker?
En background, el proceso corre en un hilo distinto. Por eso el service worker debe inicializar Firebase y obtener su propia instancia de Messaging. Luego, con setBackgroundMessageHandler, se define el contenido de la notificación del sistema que aparece en la barra donde están la hora y la fecha (uso de Push API definida por la W3C).
¿Qué inicializar en Firebase dentro del service worker?
- Importa los scripts de Firebase App y Messaging.
- Inicializa con las variables necesarias: projectId y messagingSenderId tomadas del archivo de configuración del proyecto.
// sw.js
importScripts('https://www.gstatic.com/firebasejs/X.Y.Z/firebase-app.js');
importScripts('https://www.gstatic.com/firebasejs/X.Y.Z/firebase-messaging.js');
firebase.initializeApp({
projectId: 'TU_PROJECT_ID',
messagingSenderId: 'TU_MESSAGING_SENDER_ID'
});
const messaging = firebase.messaging();
¿Cómo usar setBackgroundMessageHandler y showNotification?
- Define un título fijo: “Ya tenemos un nuevo post”.
- Usa options con
bodytomado del payload (por ejemplo, el título),icondel proyecto yclick_actionhacia la URL del sitio. - Muestra la tarjeta con
self.registration.showNotification.
messaging.setBackgroundMessageHandler((payload) => {
const title = 'Ya tenemos un nuevo post';
const options = {
body: payload?.data?.title || '',
icon: '/icon-new-post.png',
click_action: 'https://tu-sitio.com'
};
return self.registration.showNotification(title, options);
});
¿Tienes dudas sobre el manejo del token, el toast en foreground o la notificación del sistema en background? Cuéntame qué parte quieres profundizar o qué flujo necesitas probar con tu servidor.