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

  1. Crear una notificació condicional: Envia una notificació només als usuaris que han completat una acció específica dins de l'aplicació.
  2. Programar una notificació: Envia una notificació cada dia a una hora específica.
  3. Enviar una notificació amb dades personalitzades: Inclou informació addicional en la notificació i utilitza-la dins de l'aplicació.
  4. Gestionar notificacions en segon pla: Implementa la gestió de notificacions quan l'aplicació està en segon pla.

Solucions

  1. 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);
  });
  1. 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);
    });
});
  1. 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);
  });
  1. 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

Mòdul 3: Base de dades en temps real de Firebase

Mòdul 4: Cloud Firestore

Mòdul 5: Emmagatzematge de Firebase

Mòdul 6: Missatgeria en el núvol de Firebase

Mòdul 7: Analítica de Firebase

Mòdul 8: Funcions de Firebase

Mòdul 9: Monitoratge del rendiment de Firebase

Mòdul 10: Laboratori de proves de Firebase

Mòdul 11: Temes avançats de Firebase

© Copyright 2024. Tots els drets reservats