firebase-cloud-messagingIntroduzione a firebase-cloud-messaging


Osservazioni

Una nota domanda comune è "come inviare notifiche da dispositivo a dispositivo", purtroppo la risposta è: non è possibile. È necessario attivare FCM per inviare notifiche push. Questo può essere fatto in 3 modi diversi:

  1. Direttamente nella console web Firebase
  2. Impostazione di un listener di funzioni Firebase e quindi attivazione di FCM
  3. Un server richiede a FCM di inviare una notifica push

Una notifica push è un payload informativo inviato da FCM. Esistono 3 tipi di notifiche push: notification , data , notification and data . Questa informazione può essere rappresentata come un JSON:

  {
    "to" : "APA91bHun4MxP5egoKMwt2KZFBaFUH-1RYqx...",
    "notification" : {
      "body" : "great match!",
      "title" : "Portugal vs. Denmark",
      "icon" : "myicon"
    },
    "data" : {
      "Nick" : "Mario",
      "Room" : "PortugalVSDenmark"
    }
  }

L'esempio sopra è per il terzo tipo, notification e data combinati. Questo è ciò che verrà richiesto a FCM per l'invio.

  1. La console può inviare notification e notification con data ma mai solo data
  2. Le funzioni e qualsiasi server possono inviare i 3 tipi

L'importanza del tipo di notification è che consente alle applicazioni di ricevere spinte predefinite che autorizzano altri team come il marketing ad aumentare la crescita delle applicazioni semplicemente utilizzando la console Web senza ulteriori codifiche necessarie oltre ad aggiungere la libreria al progetto.

Si prega di non confondere la notifica push, il tipo di notification e la notifica visiva, quest'ultima corrisponde ad una classe Android (comunemente NotificationCompat).

Il comportamento della spinta è diverso a seconda del tipo e se l'app è in primo piano o in background. Non in primo piano significa, minimizzato o chiuso.

  1. notification attiverà una notifica visiva predefinita se l'app non è in primo piano , questa notifica può essere personalizzata nel manifest, consultare la documentazione . Se l'app è in primo piano, dobbiamo personalizzare il comportamento all'interno del metodo onMessageReceived .
  2. data comportamento del tipo di data deve sempre essere personalizzato.
  3. Le notification e i data combinati se l'app non è in primo piano attivano la notifica visiva predefinita e il carico utile dei data sarà disponibile quando l'utente fa clic. Poiché l'attività di avvio viene attivata quando si fa clic sulla notifica visiva, getIntent().getStringExtra("yourKey"); letteralmente getIntent().getStringExtra("yourKey"); in quella attività per ottenere i dati. Se l'app è attiva (in primo piano), è necessario personalizzare il comportamento all'interno del metodo onMessageReceived e ottenere immediatamente l'accesso al payload dei data .

Per ottenere il carico utile delle informazioni devi farlo all'interno del metodo onMessageReceived , lì l'unico argomento disponibile è il messaggio:

  1. Per ottenere la notification è necessario remoteMessage.getNotification() quindi è possibile ottenere il corpo o il titolo con i metodi corrispondenti
  2. Per ottenere i data devi remoteMessage.getData().get("yourKey") .

È una buona idea aggiungere ogni verifica non nulla , ci saranno diversi tipi di notifiche che arrivano nelle app avanzate. Una buona strategia è verificare se ciascuno, la notification e i data non sono nulli. Una strategia utile conseguente sarà quella di utilizzare sempre una chiave di type nelle notifiche dei data per eseguire un controllo del flusso.

Per inviare i data dalla console Web Firebase, è necessario aprire le opzioni avanzate.

Le chiavi di notification sono limitate e indicate nella documentazione. I valori di qualsiasi tipo possono essere solo String .

Se hai problemi nel trovare la documentazione in Firebase, vai in fondo alla pagina e cambia la lingua in "Inglese", le documentazioni sono più sottili in alcune altre lingue.

Installazione o configurazione

Firebase Cloud Messaging è il servizio Firebase che gestisce le notifiche push. Puoi aggiungere questo servizio in qualsiasi client: web, Android o IOS. Il funzionamento specifico di ciascuno deve essere letto dalla documentazione .

Per aggiungere FCM in qualsiasi tipo di progetto, viene sempre aggiunta una libreria .

Considerare il supporto speciale per Android è degno di prendere alcune righe per questo. Crea un nuovo progetto utilizzando Android Studio, nel menu vai su Strumenti / Firebase, attiverà l'assistente Firebase. Seleziona "Cloud Messaging" e segui i passaggi 1 e 2.

  1. Se il progetto in precedenza aggiunge un altro servizio Firebase, il passaggio uno verrà contrassegnato come completato, altrimenti è necessario farlo. Il primo passo ti consente di creare un progetto in Firebase o crearne uno nuovo. Questo passaggio scaricherà un file google-service.json che ha la configurazione per connettersi al progetto Firebase. Questo file si trova nella cartella "app".
  2. Questo passaggio aggiunge la libreria dei servizi Google e la libreria Firebase al gradle, inoltre eseguirà anche una configurazione aggiuntiva in quei file.

Questa è la base per aggiungere FCM in un progetto. Da questo momento in poi, il cliente è già in grado di ricevere notifiche push FCM che contengono un payload "di notifica" purché l'app non sia in primo piano (maggiori dettagli nelle osservazioni).

Per personalizzare ulteriormente il comportamento dell'FCM nel client, è necessario aggiungere 2 servizi, questo è ben documentato nel sito ufficiale. Di nuovo prenderemo in considerazione per Android:

  1. Creare una classe che estenda FirebaseMessagingService e sovrascriva il metodo onMessageReceived
  2. Creare una classe che estenda FirebaseInstanceIdService e sovrascriva il metodo onTokenRefresh
  3. Registrare entrambe le classi in manifest, eseguire questa operazione all'interno del tag application </ intent-filter> </ intent-filter>

È possibile ottenere il carico utile della notification e il carico utile dei data all'interno del metodo onMessageReceived utilizzando l'unico argomento presente. Il metodo onTokenRefresh viene chiamato quando il token FCM viene assegnato da FCM. Un token FCM è un ID univoco per l'installazione dell'app e il dispositivo e può essere utilizzato come indirizzo del dispositivo per inviare direttamente notifiche push.

Leggere le note per ulteriori informazioni sui tipi di notifica e sul comportamento associato.