Invio di notifiche push Android con Firebase Cloud Messaging

Autore: Louise Ward
Data Della Creazione: 4 Febbraio 2021
Data Di Aggiornamento: 1 Luglio 2024
Anonim
Android Notifications with Firebase Cloud Messaging
Video: Android Notifications with Firebase Cloud Messaging

Contenuto


Sebbene esuli dallo scopo di questo tutorial, puoi anche utilizzare FCM per le notifiche upstream, in cui FCM riceve un'applicazione client o per avvisare la tua app quando sono disponibili nuovi dati per il download. In questo modo, puoi assicurarti che la comunicazione tra il tuo server app e l'app client avvenga solo quando necessario, il che è molto più efficiente dell'app client che contatta il server a intervalli regolari, nel caso in cui ci fossero alcuni nuovi dati disponibili.

Poiché FCM fa parte di Firebase, funziona bene anche con altri servizi Firebase. Dopo aver acquisito padronanza degli elementi essenziali di FCM, potresti voler utilizzare i test A / B per identificare quali notifiche sono le più efficaci o utilizzare le previsioni Firebase per applicare un potente machine learning a tutti i dati di analisi generati dalle tue varie campagne FCM.

FCM supporta due tipi di s:

  • Notifica s. L'applicazione client si comporterà in modo diverso a seconda che si trovi in ​​background o in primo piano quando riceve l'FCM. Se la tua app è in background, Firebase SDK elaborerà automaticamente e la visualizzerà come notifica nella barra delle applicazioni del dispositivo. Poiché il sistema Android crea la notifica per te, questo è uno dei modi più semplici per inviare notifiche push ai tuoi utenti. Se la tua app riceve un FCM mentre è in primo piano, allora il sistema non lo farà gestire automaticamente questa notifica, lasciandoti elaborare la callback onReceived () della tua app. Esploreremo onReceived () più avanti in questo tutorial, ma per ora sappi solo che se la tua app riceve per un po 'è in primo piano, per impostazione predefinita non verrà visualizzata per l'utente.
  • Dati s. A differenza delle notifiche, è possibile utilizzare i dati per inviare elementi di dati personalizzati all'applicazione client. Tuttavia, FCM pone un limite di 4KB su questi dati, quindi se il tuo payload supera 4KB, dovrai recuperare i dati aggiuntivi utilizzando WorkManager o l'API JobScheduler.

In questo tutorial, ci concentreremo sulle notifiche.


Che dire di Google Cloud Messaging?

Se stai utilizzando il server Google Cloud Messaging (GCM) e le API client, ci sono alcune cattive notizie: questo servizio è già stato deprecato e Google sta pianificando di disattivare la maggior parte dei servizi GCM ad aprile 2019. Se stai ancora utilizzando GCM, dovresti iniziare a migrare i tuoi progetti su FCM ora e devi aver completato la migrazione entro aprile 2019.

Aggiunta di Firebase al tuo progetto Android

Vediamo quanto è facile aggiungere il supporto FCM di base alla tua app, quindi utilizzarlo per inviare notifiche push ai tuoi utenti.

Poiché FCM è un servizio Firebase, dovrai aggiungere Firebase alla tua app:

  • Vai alla Console di Firebase.
  • Seleziona "Aggiungi progetto" e assegna un nome al tuo progetto.
  • Leggi i termini e le condizioni. Se sei felice di procedere, seleziona "Accetto ..." seguito da "Crea progetto".
  • Seleziona "Aggiungi Firebase alla tua app Android".
  • Inserisci il nome del pacchetto del tuo progetto, quindi fai clic su "Registra app".
  • Seleziona "Scarica google-services.json".
  • In Android Studio, trascina e rilascia il file google-services.json nella directory "app" del tuo progetto.
  • Apri il tuo file build.gradle a livello di progetto e aggiungi quanto segue:

classpath com.google.gms: google-services: 4.0.1

  • Apri il tuo file build.gradle a livello di app e aggiungi il plug-in dei servizi Google, oltre alle dipendenze per Firebase Core e FCM:

// Aggiungi il plug-in dei servizi Google // applica il plug-in: com.google.gms.google-services ... ... ... dipendenze {implementazione fileTree (dir: libs, include:) // Aggiungi Firebase Core // implementazione com.google.firebase: firebase-core: 16.0.1 // Aggiungi FCM // implementazione com.google.firebase: firebase-messaging: 17.3.4

  • Quando richiesto, sincronizza le modifiche.
  • Successivamente, devi far sapere a Firebase Console di aver aggiunto Firebase al tuo progetto. Installa la tua app su uno smartphone o tablet Android fisico o su un dispositivo virtuale Android (AVD).
  • Torna in Firebase Console, seleziona "Esegui app per verificare l'installazione".
  • Una volta che Firebase ha rilevato la tua app, vedrai un "Congratulazioni". Seleziona "Continua con la console".

Invio della prima notifica push con Firebase

E questo è tutto! Ora puoi inviare una notifica push ai tuoi utenti e tale notifica verrà visualizzata nella barra delle applicazioni del dispositivo (per ora, supponiamo che la tua app non sia in primo piano al momento della consegna).


Puoi creare notifiche FCM usando il Compositore di notifiche, che è disponibile tramite la Firebase Console:

  • Assicurati che l'app sia installata e in esecuzione in background e che il tuo dispositivo abbia una connessione Internet attiva.
  • In Firebase Console, seleziona "Cloud Messaging" dal menu a sinistra.

  • Seleziona "Invia il tuo primo".
  • Dai un titolo e un po 'di testo, quindi fai clic su "Avanti".

  • Apri il menu a discesa "Seleziona app" e scegli la tua applicazione dall'elenco. Questa sezione include anche alcune opzioni avanzate che puoi utilizzare per creare notifiche mirate, in base a fattori come la versione dell'app, le impostazioni internazionali del dispositivo e l'ultima volta che l'utente ha interagito con la tua app. Non utilizzeremo nessuna di queste opzioni nella nostra notifica di prova, ma se vuoi vedere cosa è disponibile, seleziona "e ..." ed esplora il menu a discesa successivo.

  • Una volta terminata la modifica di questa sezione, fai clic su "Avanti".
  • Supponendo che desideri inviarlo immediatamente, apri il menu a discesa "Invia agli utenti idonei" e seleziona "Ora".
  • Nella parte in basso a destra dello schermo, fai clic su "Pubblica".
  • Controlla tutte le informazioni nel popup successivo e, se sei felice di procedere, seleziona "Pubblica".

Dopo alcuni istanti, tutti i dispositivi client targetizzati dovrebbero ricevere questa notifica nella barra delle applicazioni.

La maggior parte delle volte, le notifiche FCM verranno consegnate immediatamente, ma a volte potrebbero essere necessari alcuni minuti prima che arrivi, quindi non preoccuparti se la tua notifica è in ritardo.

Impostazione di alcuni obiettivi: eventi di conversione delle notifiche

Quando crei una notifica, di solito hai in mente un obiettivo: se questo sta riportando gli utenti alla tua app, convincendoli a lanciarsi in un acquisto in-app o semplicemente aprendo la tua notifica.

Puoi assegnare un obiettivo alla tua notifica, utilizzando Notification Composer, quindi tenere traccia del rendimento di tale notifica nella dashboard dei rapporti FCM.

Per impostare un obiettivo, fai clic per espandere la sezione "Eventi di conversione" di Navigation Composer, quindi apri il menu a discesa e scegli tra gli eventi di conversione disponibili.

La tua notifica ha avuto successo?

Dopo aver inviato una notifica, puoi analizzarne le prestazioni nella dashboard dei rapporti FCM, che dovrebbe caricarsi automaticamente ogni volta che ne invii una nuova, oppure puoi accedere direttamente alla dashboard.

Anche se non hai impostato obiettivi di conversione espliciti, puoi comunque valutare se gli utenti stanno agendo sulle tue notifiche, confrontando il numero di messaggi inviati con il numero di messaggi aperti.

Puoi anche selezionare qualsiasi in questo elenco per vedere i dati di invio, apertura e conversione sotto forma di grafico. Se imposti degli obiettivi di conversione, qui troverai anche le statistiche relative a tali obiettivi.

Cosa succede se la mia app è in primo piano?

Le notifiche FCM si comportano diversamente a seconda dello stato dell'applicazione client.

Per impostazione predefinita, la tua app non visualizzerà alcun FCM che riceve mentre è in primo piano, quindi quando invii un non c'è garanzia che i tuoi utenti effettivamente vedere quella .

Per agire sulla s che la tua app riceve mentre è nella primo piano, dovrai estendere FirebaseMessagingService, sovrascrivere il metodo onReceived e quindi recuperare il contenuto usando getNotification o getData, a seconda che tu stia lavorando con dati o notifiche o entrambi.

Creare una nuova classe Java denominata "MyFirebaseMessagingService" e quindi aggiungere quanto segue:

classe pubblica MyFirebaseMessagingService estende FirebaseMessagingService {@Override public void onReceived (Remote) {super.onReceived (remote);

Dovrai anche creare un oggetto di notifica. Questa è la tua occasione per personalizzare la tua notifica, ad esempio scegliendo il suono che dovrebbe essere riprodotto ogni volta che l'utente riceve questa notifica o applicando un'icona di notifica personalizzata. Dovrai anche recuperare il contenuto dai dati o dalla notifica, ad esempio:

NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder (this, "channel_id") .setContentTitle (remote.getNotification (). GetTitle ()) .setContentText (remote.getNotification (). GetBody ()) .setPriority (NotificationCompat.PRIORITY_DE). setStyle (new NotificationCompat.BigTextStyle ()) .setSound (RingtoneManager.getDefaultUri (RingtoneManager.TYPE_NOTIFICATION)) .setSmallIcon (R.mipmap.ic_launcher) .setAutoCancel (true); NotificationManager notificationManager = (NotificationManager) getSystemService (Context.NOTIFICATION_SERVICE); notificationManager.notify (0, notificationBuilder.build ()); }}

Dopo aver creato il servizio, non dimenticare di aggiungerlo al tuo manifest:

Ora, ogni volta che la tua app riceve un FCM mentre è in primo piano, verrà consegnata al gestore onReceived () e la tua app eseguirà quindi l'azione da te definita, come pubblicare la notifica o aggiornare i contenuti della tua app.

Notifiche più coinvolgenti: targeting per i tuoi utenti

Fino ad ora, abbiamo inviato la stessa notifica a tutta la nostra base di utenti, ma le notifiche sono molto più coinvolgenti quando sono rivolte a utenti specifici.

È possibile utilizzare Notification Composer per inviare diverse notifiche a diverse parti della base utenti. Vai al Compositore di notifiche e crea la tua notifica normalmente, ma nella sezione "Destinazione", fai clic su "e". Ciò ti dà accesso a un nuovo menu a discesa, contenente le seguenti opzioni:

  • Versione. Ciò consente di scegliere come target o escludere dispositivi che eseguono versioni specifiche dell'applicazione. Ad esempio, potresti inviare notifiche alle persone che eseguono la versione gratuita, incoraggiandole a passare alla versione Premium della tua app.
  • Linguaggio. È possibile utilizzare questa impostazione per scegliere come target o escludere le diverse lingue e impostazioni locali supportate dall'applicazione, ad esempio la creazione di notifiche personalizzate per fusi orari o lingue diverse.
  • Pubblico / i utente / i. Ciò ti consente di scegliere come target o escludere diverse sezioni del tuo pubblico. Ad esempio, potresti utilizzare questa impostazione per tentare le persone che hanno una storia di acquisti in-app, offrendo loro uno sconto o attirando la loro attenzione su tutti i nuovi fantastici prodotti in-app che hai appena pubblicato.
  • Proprietà dell'utente. Se hai configurato Firebase Analytics, avrai accesso a una serie di informazioni sul tuo pubblico, tramite le proprietà dell'utente. Puoi utilizzare queste proprietà in combinazione con FCM, per inviare notifiche mirate a sezioni molto specifiche della tua base di utenti, come le persone di età compresa tra 25 e 34 anni che sono interessate allo sport.
  • Predizione. Se hai impostato le previsioni di Firebase, puoi scegliere come target gli utenti in base alla probabilità che abbiano un comportamento particolare nei prossimi 7 giorni. Ad esempio, se Pronostici avverte che è probabile che qualcuno si stacchi dal gioco per cellulare, è possibile utilizzare FCM per invitarli a prendere parte a una nuova missione o inviare loro una valuta in-game.
  • Ultimo coinvolgimento in app. Se un utente non ha avviato la tua app da un po 'di tempo, puoi utilizzare questa impostazione per inviare loro alcune notifiche, solo per ricordare loro tutto l'ottimo contenuto che la tua app ha da offrire.
  • Prima aperto. Ciò ti consente di inviare notifiche in base alla prima volta che l'utente ha aperto l'app, ad esempio potresti aiutare i nuovi utenti a tenersi aggiornati inviando loro notifiche contenenti suggerimenti e consigli utili.

Targeting di un singolo dispositivo con token di registrazione

Abbiamo già visto come inviare notifiche mirate in base a fattori quali l'età dell'utente, gli interessi e l'ultima volta che hanno interagito con la tua app, ma puoi prendi anche più specifico. In questa sezione finale, ti mostrerò come inviare una notifica FCM a singolo dispositivo.

Quando l'utente avvia l'app per la prima volta, l'SDK FCM genera un token di registrazione per quell'istanza dell'app client. È possibile utilizzare FirebaseInstanceId.getInstance (). GetInstanceId () per acquisire questo token di registrazione e quindi inviare una notifica a questo token specifico.

Tieni presente che in un progetto del mondo reale, in genere acquisisci un token inviandolo al tuo server delle app e memorizzandolo utilizzando il tuo metodo preferito, ma per aiutare a mantenere le cose semplici semplicemente stamperò questo token sul Logcat di Android Studio.

Ecco la mia attività principale completata:

import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.support.annotation.NonNull; import android.util.Log; import com.google.android.gms.tasks.OnCompleteListener; import com.google.android.gms.tasks.Task; import com.google.firebase.iid.FirebaseInstanceId; import com.google.firebase.iid.InstanceIdResult; classe pubblica MainActivity estende AppCompatActivity {stringa statica privata finale TAG = "MainActivity"; @Override protetto void onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState); setContentView (R.layout.activity_main); FirebaseInstanceId.getInstance (). GetInstanceId () .addOnCompleteListener (new OnCompleteListener() {@Override public void onComplete (@NonNull Task task) {if (! task.isSuccessful ()) {// Da fare // return; } // Ottieni il token ID istanza // String token = task.getResult (). GetToken (); Stringa msg = getString (R.string.fcm_token, token); Log.d (TAG, msg); }}); }}

Apri il tuo file strings.xml e crea la risorsa stringa "fcm_token" a cui facciamo riferimento nella nostra attività principale:

Token FCM:% s

Ora puoi recuperare il token univoco del tuo dispositivo:

  • Installa il tuo progetto sul dispositivo Android collegato o su AVD.
  • Apri Logcat di Android Studio, selezionando la scheda "Logcat" (in cui è posizionato il cursore nella schermata seguente).

  • Il token del dispositivo verrà stampato nella sezione "Debug" di Logcat, quindi apri il menu a discesa e seleziona "Debug".

A seconda della quantità di informazioni nel tuo Logcat, potrebbe essere difficile individuare la linea che stai cercando. Se stai lottando, esegui una ricerca della parola "token" o prova a chiudere e quindi a riavviare l'app.

Dopo aver recuperato il token, puoi utilizzarlo per inviare una notifica push a questo particolare dispositivo:

  • Vai alla Console di Firebase e seleziona il tuo progetto dal menu a discesa, se non l'hai già fatto.
  • Scegli "Cloud Messaging" dal menu a sinistra.
  • Fai clic sul pulsante "Nuova notifica".
  • Inserisci il titolo e il testo, come di consueto, quindi fai clic su "Test sul dispositivo".

  • Copia / incolla il token nel campo "Aggiungi un'istanza ...", quindi fai clic sulla piccola icona blu "+" che viene visualizzata.
  • Seleziona la casella di controllo che accompagna il token.

  • Fai clic su "Test".

Questa notifica verrà ora visualizzata solo sul dispositivo client di destinazione.

Avvolgendo

In questo articolo, ti ho mostrato come inviare notifiche push Android, utilizzando Firebase Cloud Messaging e come creare notifiche destinate a diverse sezioni della tua base utenti.

Utilizzerai FCM nei tuoi progetti Android? Fateci sapere nei commenti qui sotto!

Il rumor mill è piuttoto caldo che Apple rilacerà preto una orta di dipoitivo di tracciamento, con il uo chip U1 integrato nei modelli iPhone 11 e 11 Pro per ottenere almeno la parte di trac...

Gli eperti hanno avvertito delle coneguenze della guerra commerciale di Trump con la Cina per un po ', citando aumenti di prezzo per più beni, comprea l'elettronica di conumo. Ora, una nu...

Aspetto