Tipi di messaggi Firebase Cloud Messaging

Con FCM, puoi inviare due tipi di messaggi alle tue app client:

  • I messaggi di notifica, simili ai "messaggi di visualizzazione", vengono gestiti automaticamente dall'SDK FCM. (Su Android con AndroidConfigV2, utilizza RemoteNotification per tutti i messaggi che mostrano una notifica visibile all'utente, in modo che vengano recapitati senza ritardi intenzionali; le notifiche vengono visualizzate automaticamente indipendentemente dal fatto che l'app sia in primo piano o in background, a meno che non vengano disattivate esplicitamente nel codice client.)
  • Messaggi di dati, che vengono gestiti dall'app client.

I messaggi di notifica contengono un insieme predefinito di chiavi visibili agli utenti e possono contenere un payload di dati facoltativo. I messaggi di dati, invece, contengono solo le coppie chiave-valore personalizzate definite dall'utente. Il payload massimo per entrambi i tipi di messaggi è di 4096 byte, tranne quando i messaggi vengono inviati dalla console Firebase, che applica un limite di caratteri di 1000.

Scenario d'uso Come inviare
Messaggio della notifica L'SDK FCM mostra il messaggio sui dispositivi degli utenti finali per conto dell'app client quando è in esecuzione in background. In caso contrario, se l'app è in esecuzione in primo piano quando viene ricevuta la notifica, il comportamento è determinato dal codice dell'app.
  1. In un ambiente attendibile come Cloud Functions o il tuo server dell'app, utilizza l'Firebase Admin SDK o l'API HTTP v1. Imposta la chiave notification. Può avere un payload di dati facoltativo. Sempre comprimibile.

    Consulta alcuni esempi di notifiche display e invia i payload della richiesta.

  2. Utilizza Compositore di notifiche: inserisci il testo del messaggio, il titolo e così via e invia. Aggiungi un payload di dati facoltativo fornendo dati personalizzati.
Messaggio di dati L'app client è responsabile dell'elaborazione dei messaggi di dati. I messaggi di dati hanno solo coppie chiave-valore personalizzate senza nomi di chiavi riservati (vedi di seguito). In un ambiente attendibile come Cloud Functions o il tuo server dell'app, utilizza l'Firebase Admin SDK o l'API HTTP v1. Nella richiesta di invio, imposta la chiave data.

Puoi utilizzare i messaggi di notifica quando vuoi che l'SDK FCM gestisca automaticamente la visualizzazione di una notifica quando la tua app è in esecuzione in background. FCM può inviare un messaggio di notifica con un payload di dati facoltativo. In questi casi, FCM mostra il payload di notifica e l'app client gestisce il payload di dati.

Puoi utilizzare i messaggi di dati quando vuoi elaborarli con il codice della tua app client.

Messaggi di notifica

Puoi inviare messaggi di notifica utilizzando la console Firebase, Firebase Admin SDK o l'API FCM HTTP v1. La console Firebase fornisce test A/B basati su analisi per aiutarti a perfezionare e migliorare i messaggi di notifica.

Per inviare messaggi di notifica utilizzando l'API HTTP v1 Firebase Admin SDK o FCM, imposta la chiave notification con l'insieme predefinito di opzioni chiave-valore del messaggio di notifica. Puoi utilizzare il seguente esempio per formattare un messaggio di notifica in un'app di messaggistica immediata

{
  "message":{
    "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "notification":{
      "title":"Portugal vs. Denmark",
      "body":"great match!"
    }
  }
}

I messaggi di notifica vengono recapitati nella barra delle notifiche quando l'app è in background. Per le app in primo piano, i messaggi vengono gestiti da una funzione di callback.

Puoi consultare la documentazione di riferimento dell'oggetto di notifica dell'API HTTP v1 di FCM per l'elenco completo delle chiavi predefinite disponibili per la creazione di messaggi di notifica.

Messaggi di dati

Sta a te decidere come utilizzare il payload FCM data per implementare lo schema di crittografia che preferisci. Assicurati di non utilizzare parole riservate nelle coppie chiave-valore personalizzate. Le parole riservate includono from, message_type o qualsiasi parola che inizia con google., gcm. o gcm.notification..

L'esempio seguente mostra l'utilizzo del campo di dati di primo livello o comune, che viene interpretato dai client su tutte le piattaforme che ricevono il messaggio. Su ogni piattaforma, l'app client riceve il payload di dati in una funzione di callback

{
  "message":{
    "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "data":{
      "Nick" : "Mario",
      "body" : "great match!",
      "Room" : "PortugalVSDenmark"
    }
  }
}

Messaggi di notifica con payload di dati facoltativo

Puoi inviare messaggi di notifica che contengono un payload facoltativo di coppie chiave-valore personalizzate in modo programmatico o utilizzando la console Firebase. In Compositore di notifiche, utilizza i campi Dati personalizzati in Opzioni avanzate.

Il comportamento dell'app quando riceve messaggi che includono payload di dati e di notifica dipende dal fatto che l'app sia in background o in primo piano, ovvero se è attiva o meno al momento della ricezione.

  • In background, le app ricevono il payload di notifica nella barra delle notifiche e gestiscono il payload di dati solo quando l'utente tocca la notifica.
  • Quando è in primo piano, l'app riceve un oggetto messaggio con entrambi i payload disponibili.

Ecco un messaggio in formato JSON contenente sia la chiave notification sia la chiave data:

{
  "message":{
    "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "notification":{
      "title":"Portugal vs. Denmark",
      "body":"great match!"
    },
    "data" : {
      "Nick" : "Mario",
      "Room" : "PortugalVSDenmark"
    }
  }
}