En aquest tema, explorarem les funcions avançades de la missatgeria en el núvol de Firebase (FCM). Aquestes funcions permeten personalitzar i optimitzar les notificacions per millorar l'experiència de l'usuari i augmentar la interacció amb l'aplicació.
Contingut
Introducció a les funcions avançades
Les funcions avançades de FCM permeten enviar notificacions més complexes i personalitzades. Aquestes funcions inclouen:
- Notificacions condicionals: Enviar notificacions basades en condicions específiques.
- Notificacions programades: Enviar notificacions en un moment específic.
- Notificacions amb dades personalitzades: Incloure dades personalitzades en les notificacions.
- Notificacions en segon pla: Gestionar notificacions quan l'aplicació està en segon pla.
Notificacions condicionals
Les notificacions condicionals permeten enviar missatges a dispositius que compleixen certes condicions. Per exemple, pots enviar una notificació només als usuaris que han completat una acció específica dins de l'aplicació.
Exemple de codi
const admin = require('firebase-admin'); admin.initializeApp(); const message = { notification: { title: 'Oferta especial!', body: 'Descompte del 20% en la teva propera compra.' }, condition: "'completed_purchase' in topics" }; admin.messaging().send(message) .then((response) => { console.log('Notificació enviada amb èxit:', response); }) .catch((error) => { console.log('Error enviant la notificació:', error); });
Explicació
- admin.messaging().send(message): Envia el missatge als dispositius que compleixen la condició especificada.
- condition: Defineix la condició que han de complir els dispositius per rebre la notificació.
Notificacions programades
Les notificacions programades permeten enviar missatges en un moment específic. Això és útil per a recordatoris o esdeveniments programats.
Exemple de codi
const functions = require('firebase-functions'); const admin = require('firebase-admin'); admin.initializeApp(); exports.scheduledNotification = functions.pubsub.schedule('every 24 hours').onRun((context) => { const message = { notification: { title: 'Recordatori diari', body: 'No oblidis completar la teva tasca diària!' }, topic: 'daily_reminder' }; return admin.messaging().send(message) .then((response) => { console.log('Notificació programada enviada amb èxit:', response); }) .catch((error) => { console.log('Error enviant la notificació programada:', error); }); });
Explicació
- functions.pubsub.schedule('every 24 hours').onRun((context) => {...}): Programa una funció per executar-se cada 24 hores.
- topic: Defineix el tema al qual s'enviarà la notificació.
Notificacions amb dades personalitzades
Les notificacions amb dades personalitzades permeten incloure informació addicional en el missatge, que pot ser utilitzada per l'aplicació per realitzar accions específiques.
Exemple de codi
const message = { data: { title: 'Nova missió disponible', body: 'Completa la nova missió per guanyar recompenses!', missionId: '12345' }, token: 'user_device_token' }; admin.messaging().send(message) .then((response) => { console.log('Notificació amb dades personalitzades enviada amb èxit:', response); }) .catch((error) => { console.log('Error enviant la notificació amb dades personalitzades:', error); });
Explicació
- data: Conté les dades personalitzades que es poden utilitzar dins de l'aplicació.
- token: El token del dispositiu de l'usuari que rebrà la notificació.
Notificacions en segon pla
Les notificacions en segon pla permeten gestionar missatges quan l'aplicació no està activa. Això és útil per actualitzar dades o realitzar accions sense la interacció de l'usuari.
Exemple de codi
self.addEventListener('push', function(event) { const data = event.data.json(); const options = { body: data.body, icon: 'icon.png', data: { url: data.url } }; event.waitUntil( self.registration.showNotification(data.title, options) ); });
Explicació
- self.addEventListener('push', function(event) {...}): Escolta els esdeveniments de notificació push.
- self.registration.showNotification(data.title, options): Mostra la notificació amb les opcions especificades.
Exercicis pràctics
- Crear una notificació condicional: Envia una notificació només als usuaris que han completat una acció específica dins de l'aplicació.
- Programar una notificació: Envia una notificació cada dia a una hora específica.
- Enviar una notificació amb dades personalitzades: Inclou informació addicional en la notificació i utilitza-la dins de l'aplicació.
- Gestionar notificacions en segon pla: Implementa la gestió de notificacions quan l'aplicació està en segon pla.
Solucions
- Notificació condicional
const message = { notification: { title: 'Felicitats!', body: 'Has completat una acció especial.' }, condition: "'action_completed' in topics" }; admin.messaging().send(message) .then((response) => { console.log('Notificació condicional enviada amb èxit:', response); }) .catch((error) => { console.log('Error enviant la notificació condicional:', error); });
- Notificació programada
exports.dailyReminder = functions.pubsub.schedule('0 9 * * *').onRun((context) => { const message = { notification: { title: 'Bon dia!', body: 'Recorda completar la teva tasca diària.' }, topic: 'daily_reminder' }; return admin.messaging().send(message) .then((response) => { console.log('Notificació programada enviada amb èxit:', response); }) .catch((error) => { console.log('Error enviant la notificació programada:', error); }); });
- Notificació amb dades personalitzades
const message = { data: { title: 'Nou desafiament', body: 'Accepta el desafiament i guanya premis!', challengeId: '67890' }, token: 'user_device_token' }; admin.messaging().send(message) .then((response) => { console.log('Notificació amb dades personalitzades enviada amb èxit:', response); }) .catch((error) => { console.log('Error enviant la notificació amb dades personalitzades:', error); });
- Notificacions en segon pla
self.addEventListener('push', function(event) { const data = event.data.json(); const options = { body: data.body, icon: 'icon.png', data: { url: data.url } }; event.waitUntil( self.registration.showNotification(data.title, options) ); });
Conclusió
En aquest tema, hem explorat les funcions avançades de la missatgeria en el núvol de Firebase. Hem après a enviar notificacions condicionals, programades, amb dades personalitzades i a gestionar notificacions en segon pla. Aquestes funcions permeten personalitzar i optimitzar les notificacions per millorar l'experiència de l'usuari i augmentar la interacció amb l'aplicació.
En el proper mòdul, explorarem l'analítica de Firebase, que ens permetrà registrar esdeveniments, propietats d'usuari i analitzar dades per comprendre millor el comportament dels usuaris dins de l'aplicació.
Curs de Firebase
Mòdul 1: Introducció a Firebase
Mòdul 2: Autenticació de Firebase
- Introducció a l'autenticació de Firebase
- Autenticació amb correu electrònic i contrasenya
- Autenticació amb xarxes socials
- Gestió d'usuaris
Mòdul 3: Base de dades en temps real de Firebase
- Introducció a la base de dades en temps real
- Lectura i escriptura de dades
- Estructura de dades i regles de seguretat
- Capacitats fora de línia
Mòdul 4: Cloud Firestore
- Introducció a Cloud Firestore
- Model de dades de Firestore
- Operacions CRUD
- Consultes avançades
- Regles de seguretat
Mòdul 5: Emmagatzematge de Firebase
- Introducció a l'emmagatzematge de Firebase
- Carregar fitxers
- Descarregar fitxers
- Metadades de fitxers i seguretat
Mòdul 6: Missatgeria en el núvol de Firebase
- Introducció a la missatgeria en el núvol
- Enviar notificacions
- Gestionar notificacions
- Funcions avançades de missatgeria
Mòdul 7: Analítica de Firebase
Mòdul 8: Funcions de Firebase
Mòdul 9: Monitoratge del rendiment de Firebase
- Introducció al monitoratge del rendiment
- Configuració del monitoratge del rendiment
- Analitzar dades de rendiment