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' FCM SDK.
  • I messaggi di dati, che vengono gestiti dall'app client.

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

Scenario di utilizzo Come inviare
Messaggio della notifica FCM SDK mostra il messaggio sui dispositivi degli utenti finali per conto dell'app client quando è in esecuzione in background. Altrimenti, 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 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 di visualizzazione e payload delle richieste di invio.

  2. Utilizza il composer di notifiche: inserisci il testo del messaggio, il titolo e così via, quindi 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 sotto). In un ambiente attendibile come Cloud Functions o il server dell'app, utilizza l' Firebase Admin SDK o l' API HTTP v1. Nella richiesta di invio, imposta la data chiave.

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

Puoi utilizzare i messaggi di dati quando vuoi elaborare i messaggi con il tuo codice dell'app client.

Messaggi di notifica

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

Per inviare messaggi di notifica utilizzando il Firebase Admin SDK o l'API HTTP v1 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 istantanea.

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

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

Puoi utilizzare 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 data di FCM 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 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 dei 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 a livello di programmazione o utilizzando la Firebase console. Nel composer di notifiche, utilizza i campi Dati personalizzati in Opzioni avanzate.

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

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

Di seguito è riportato un messaggio in formato JSON contenente sia la notification chiave sia la data chiave:

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