Il tuo primo messaggio push multicast che utilizza argomenti FCM

1. Introduzione

Obiettivi

In questo codelab imparerai come strumentare la tua app multipiattaforma in modo da poter trasmettere messaggi push in multicast a vari sottogruppi delle istanze dell'app utilizzando argomenti FCM.

Una volta terminato, sarai in grado di sfruttare l'infrastruttura FCM per gestire questi sottogruppi e i messaggi push multicast sui sottogruppi.

Panoramica degli argomenti

Gli argomenti sono un modo supportato dall'infrastruttura FCM per raggiungere i sottogruppi delle istanze dell'app con i messaggi.

FCM fornisce le API per inviare messaggi e mantenere le iscrizioni a questi argomenti. L'atto di associare e dissociare un'istanza dell'app all'argomento è chiamato rispettivamente iscriviti e annulla l'iscrizione

Gli argomenti devono essere utilizzati per i contenuti disponibili pubblicamente. Ad esempio, messaggi sugli aggiornamenti meteo. Se desideri inviare messaggi riservati all'utente, utilizza Firebase Admin SDK per il multicasting di messaggi su più dispositivi .

Il multicasting basato su argomenti è ottimizzato per il throughput.

Cosa imparerai

  • Come iscrivere (e annullare l'iscrizione) gli utenti agli argomenti da un'app mobile.
  • Come inviare messaggi push multicast utilizzando gli argomenti.
  • Come inviare messaggi a una combinazione di argomenti utilizzando le condizioni degli argomenti.
  • Come gestire le sottoscrizioni agli argomenti sul lato server ed eseguire sottoscrizioni e cancellazioni in blocco.

Cosa costruirai

  • Un'app Android che si iscrive/annulla l'iscrizione agli argomenti e riceve i messaggi quando vengono inviati agli argomenti.
  • Un'integrazione lato server che utilizza Firebase Admin SDK, che verrà utilizzato per inviare messaggi di argomento tramite le API FCM.

Di cosa avrai bisogno

  • Un browser a tua scelta, come Chrome.
  • IntelliJ IDEA IDE per lo sviluppo di applicazioni Java.
    • Assicurati di attivare il supporto per Gradle durante l'installazione.
  • Android Studio IDE per lo sviluppo di applicazioni Android.
  • Un dispositivo per eseguire l'applicazione Android. Entrambi:
    • L'emulatore Android. (Richiede la configurazione in Android Studio ).
    • Un dispositivo Android fisico collegato al computer e impostato in modalità sviluppatore.
  • Un account Google per creare e gestire il tuo progetto Firebase.

2. Prepararsi

Ottieni il codice

Clona il repository GitHub dalla riga di comando:

git clone https://github.com/firebase/quickstart-android.git fcm-codelab

Il codice di esempio verrà clonato nella directory fcm-codelab .

cd fcm-codelab

L'app di avvio per questo codelab si trova nella directory di messaging del ramo fcm-topics-codelab . Procedi come segue per raggiungere il codice di avviamento. Contiene due directory StockNewsApp e StockNewsServer . Il primo contiene l'app Android di avviamento e il secondo ha il codice lato server di avviamento.

git checkout fcm-topics-codelab
cd messaging/fcm-topics-codelab/starter

La versione completa di questo codelab viene inserita nella directory messaging/fcm-topics-codelab/completed .

Crea un progetto Firebase

  1. Nella console Firebase , fai clic su Aggiungi progetto , denomina il progetto Firebase StockNews e fai clic su continua. Nota: ricorda l'ID progetto per il tuo progetto Firebase (o fai clic sull'icona Modifica per impostare l'ID progetto preferito).

fc08f9a7808e4553.png

  1. Puoi saltare l'abilitazione di Google Analytics. Per gli scopi di questo codelab, non ne hai bisogno. Fare clic su Continua.
  2. Fare clic su Crea progetto .

Congratulazioni! Hai appena creato il tuo progetto Firebase. Ora puoi fare clic sul nome del progetto per accedere alla console.

3. Configurazione dell'app Firebase specifica della piattaforma

La maggior parte delle modifiche al codice richieste per abilitare il supporto di Firebase sono già archiviate nel progetto su cui stai lavorando. Tuttavia, per aggiungere il supporto per le piattaforme mobili, è necessario:

  • Registra la piattaforma desiderata sul progetto Firebase
  • Scarica il file di configurazione specifico della piattaforma e aggiungilo al codice.

Ai fini di questo codelab, aggiungeremo un'app Android Firebase.

84e0b3199bef6d8a.png Configura Android

  1. In Firebase Console , seleziona Impostazioni progetto nella parte superiore della barra di navigazione a sinistra nell'ingranaggio Impostazioni e fai clic sull'icona Android sotto Le tue app nella pagina Generale .

Dovresti vedere la seguente finestra di dialogo: 8254fc299e82f528.png

  1. Il valore importante da fornire è il nome del pacchetto Android . Impostalo su com.ticker.stocknews .
    1. Il nome del pacchetto fornito qui deve essere lo stesso di quello fornito in AndroidManifest.xml del codice StockNewsApp di partenza. Se desideri individuarlo o modificarlo, procedi nel seguente modo:
      1. Nella directory StockNewsApp , apri il file app/src/main/AndroidManifest.xml .
      2. Nell'elemento manifest , trova il valore stringa dell'attributo package . Questo valore è il nome del pacchetto Android.
  1. Nella finestra di dialogo Firebase, incolla il nome del pacchetto copiato nel campo del nome del pacchetto Android .
  2. Non è necessario il certificato di firma del debug SHA-1 per questo codelab, perché questa app non verrà rilasciata. Lascia questo vuoto.
  3. Fare clic su Registra app .
  4. Continuando nella Console Firebase, segui le istruzioni per scaricare il file di configurazione google-services.json .
  5. Puoi saltare i restanti passaggi di configurazione, poiché tutto il resto è già configurato nel codice dell'app di base. Troverai la tua app elencata nella pagina principale di Firebase Console.
  6. Copia il file google-services.json (che hai appena scaricato) nella directory messaging/fcm-topics-codelab/starter/StockNewsApp/app .

4. Crea ed esegui la tua app

Sei pronto per iniziare effettivamente a lavorare sulla tua app! Innanzitutto, crea ed esegui l'app.

Importa l'app di avviamento

Avvia Android Studio e importa messaging/fcm-topics-codelab/starter/StockNewsApp dalla directory del codice di avvio.

Dopo che il progetto è stato caricato, potresti anche vedere un avviso che Git non sta tracciando tutte le modifiche locali, puoi fare clic su " Ignora " o " X " in alto a destra. (Non riporterai alcuna modifica al repository Git.)

Nell'angolo in alto a sinistra della finestra del progetto, dovresti vedere qualcosa come l'immagine qui sotto se sei nella visualizzazione Android . (Se sei nella vista Progetto , dovrai espandere il progetto per vedere la stessa cosa)

b574ea0089ee87c6.png

Tieni presente che Android Studio potrebbe richiedere diversi secondi per compilare il progetto in background per la prima volta. Durante questo periodo vedrai uno spinner nella barra di stato nella parte inferiore di Android Studio:

4bc64eb3b99eb0ae.png

Ti consigliamo di attendere fino al termine dell'operazione prima di apportare modifiche al codice. Ciò consentirà ad Android Studio di inserire tutti i componenti necessari.

Inoltre, se viene visualizzato un messaggio che dice "Ricarica per rendere effettive le modifiche alla lingua?" o qualcosa di simile, seleziona "Sì".

Configurazione dell'emulatore

Se hai bisogno di aiuto per configurare un emulatore Android, fai riferimento all'articolo Esegui la tua app .

Comprendi il codice di avviamento dell'app Android

  • Il codice di avviamento è un'app Android leggera con funzionalità e interfaccia utente minime.
  • Una dipendenza dall'SDK di messaggistica di Firebase è già stata aggiunta al file app/build.gradle .

f04ff8f48d186dff.png

  • In AndroidManifest.xml è già stato aggiunto un gestore di callback MESSAGING_EVENT .
    • Questo gestore, StockNewsMessagingService.java , estende la classe FirebaseMessagingService che fornisce varie funzionalità relative a Firebase Cloud Messaging. Per ulteriori informazioni, consulta la documentazione di FirebaseMessagingService . b843c4d33ee53166.png
    88fad1960f4a6ff5.png
    • La funzione onNewToken viene chiamata quando viene creato o aggiornato il token di registrazione FCM. Per ulteriori informazioni, vedere Monitorare la generazione di token .
    • La funzione onMessageReceived viene chiamata quando viene ricevuto un messaggio e l'app è in primo piano. Attualmente, registra semplicemente il messaggio ricevuto.
  • Inoltre, in AndroidManifest.xml , viene fornita anche una classe di Application Android denominata StockNewsApplication . a4982a8731492dfc.pngccde692f7f68dc5a.png
    • Questa classe sarà la prima a essere istanziata all'avvio dell'app.
    • Nella funzione StockNewsApplication della classe onCreate , viene aggiunta una chiamata per la creazione del token di registrazione FCM. Genererà un token di registrazione FCM valido e lo registrerà.
  • MainActivity.java aggiunge RecyclerView che visualizza le scelte della categoria di azioni.
  • SubscriptionAdapter.java implementa RecyclerView.Adapter che disegna la schermata di selezione della categoria di azioni.
    • Ciascuna categoria di azioni ha un nome e un interruttore di sottoscrizione accanto ad essa.
    • La modifica dell'interruttore dovrebbe effettuare una chiamata di iscrizione/annullamento dell'iscrizione a un argomento FCM.
    • Implementerai questi bandi nelle prossime sezioni.
  • La classe model/StockCategories.java contiene un elenco di tutte le categorie di azioni e i nomi degli argomenti associati.

b32663ec4e865a18.png

Esegui l'app di avviamento

  1. Collega il tuo dispositivo Android al computer o avvia un emulatore.
  2. Nella barra degli strumenti in alto, seleziona il tuo dispositivo Android o emulatore di destinazione e premi il pulsante Esegui.

5b27fc5b237e06b9.png

  1. L'interfaccia utente dell'app sarà simile alla seguente:

ff5b1a1c53231c54.png

  1. L'app creerà un token di registrazione FCM e lo registrerà. Tuttavia, non cambierà nulla nell'interfaccia utente dell'app.
    1. Copia e salva il token di registrazione FCM poiché verrà utilizzato nei passaggi successivi.

927eb66bc909f36b.png

5. Invia un messaggio di prova

Ora sei pronto per inviare un messaggio di prova all'istanza dell'app che avevi configurato nell'ultimo passaggio.

Importa il codice del server iniziale

Avvia IntelliJ IDEA e apri il progetto messaging/fcm-topics-codelab/starter/StockNewsServer .

La vista del progetto nella barra di navigazione a sinistra dovrebbe assomigliare a questa:

da20711f6527dff6.png

Nota, potrebbero essere necessari alcuni minuti prima che Intellij IDEA crei il tuo progetto, incluso il pull delle dipendenze richieste.

Comprendere il codice di avvio del server

  • Il codice di avvio del server è un progetto Java basato su Gradle.
  • Il file build.gradle ha già aggiunto la dipendenza dall'SDK di firebase-admin . Questo SDK fornisce l'accesso a varie funzionalità di invio di messaggi FCM.

650fc733298588f8.png

  • Infine, ci sono due classi, vale a dire:
    • FcmSender.java : questa classe contiene i seguenti metodi di nota:
      • initFirebaseSDK : inizializza l'SDK firebase-admin.
      • sendMessageToFcmRegistrationToken : invia un messaggio a un token di registrazione FCM.
      • sendMessageToFcmTopic : invia un messaggio a un argomento FCM.
      • sendMessageToFcmTopicCondition : invia un messaggio a una condizione di argomento FCM.
    • FcmSubscriptionManager.java : questa classe contiene metodi che consentono di gestire le sottoscrizioni agli argomenti dal lato server.
      • initFirebaseSDK : inizializza l'SDK firebase-admin.
      • subscribeFcmRegistrationTokensToTopic : iscrivi i token di registrazione FCM a un argomento FCM.
      • unsubscribeFcmRegistrationTokensFromTopic : annulla la sottoscrizione dei token di registrazione FCM da un argomento FCM.

Impostazione del codice server

  1. Innanzitutto, è necessario configurare un account del servizio Firebase che consenta all'SDK firebase-admin di autorizzare le chiamate alle API FCM.
    1. Vai alla console Firebase, fai clic sull'icona a forma di ingranaggio accanto a Panoramica progetto nella barra di navigazione a sinistra e seleziona Impostazioni progetto . 8c2108d4d7c915e9.png
    2. Nella pagina delle impostazioni, seleziona Account di servizio e fai clic su Crea account di servizio . 84b128cc5dac0a85.png
    3. Ora fai clic sul pulsante Genera nuova chiave privata e inizierà un download automatico del file della tua chiave.
    4. Rinominare il file della chiave in service-account.json e copiarlo nella cartella messaging/fcm-topics-codelab/starter/StockNewsServer/src/main/resources .
    5. Sia FcmSender.java che FcmSubscriptionManager.java caricano il file service-account.json da classpath usando il codice seguente. 8dffbee658e0bdd.png
  2. A questo punto il codice del server è pronto. Esegui Build -> Build Project dalla barra dei menu in alto.

Invio di un messaggio di prova

  1. In FcmSender.java individua la funzione sendMessageToFcmRegistrationToken e inserisci il token di registrazione FCM copiato da Esegui la sezione dell'app di avvio nel campo registrationToken .
  2. Nella funzione main , decommenta solo la funzione sendMessageToFcmRegistrationToken e fai clic su Esegui per eseguire il codice.
    1. Osservare come viene impostato il token di registrazione FCM nel campo Token dell'oggetto message .
    2. Inoltre, nota come abbiamo utilizzato l'API di send dell'interfaccia di FirebaseMessaging .

52e4a3ec3f816473.png

  1. Questo dovrebbe inviare un messaggio all'istanza dell'app che hai configurato nel passaggio precedente.
  2. Quando l'istanza dell'app è in primo piano, dovresti vedere il contenuto del messaggio registrato.

d3540ec1089f97dd.png

  1. E quando l'istanza dell'app è in background, vedrai apparire il messaggio nella barra delle notifiche.

31203deca59c03fe.png

Fantastico, hai utilizzato Firebase Admin SDK per inviare messaggi a un'istanza dell'app. Ulteriori informazioni sull'utilizzo di Firebase Admin SDK nel server .

6. Implementare l'abbonamento/annullamento dell'abbonamento all'argomento

In questo passaggio implementerai le azioni di sottoscrizione e annullamento dell'iscrizione all'argomento, nell'interruttore Categoria Stock dell'app Android.

Quando un utente dell'app attiva o disattiva l'opzione per una particolare categoria di azioni, verrà effettuata una richiesta di sottoscrizione o annullamento della sottoscrizione di un argomento.

Codice di revisione

  • Passare alla classe SubscriptionAdapter.java nel codice dell'app Android e individuare la classe RecyclerViewViewHolder .

6c0614199e684f6.png

  • Il costruttore di classi configura un listener per l'attivazione/disattivazione della sottoscrizione usando setOnCheckedChangeListener .
  • A seconda dell'interruttore, le azioni di sottoscrizione e annullamento dell'iscrizione vengono eseguite chiamando rispettivamente i metodi subscribeToStockCategory e unsubscribeFromStockCategory .
  • Il metodo setData viene chiamato onBindViewHolder dell'adattatore RecyclerView per associare il ViewHolder con la categoria Stock appropriata.

Implementare la sottoscrizione dell'argomento

  1. Nel metodo subscribeToStockCategory , implementerai la chiamata all'API subscribeToTopic dell'oggetto FirebaseMessaging . Il codice potrebbe assomigliare a questo:
   void subscribeToStockCategory() {
      // Making call to FCM for subscribing to the topic for stockCategory
     FirebaseMessaging.getInstance().subscribeToTopic(stockCategory.getTopicName()).addOnSuccessListener(
          unused -> {
            // Subscribing action successful
            Log.i(TAG, "Subscribed to topic: " + stockCategory.getTopicName());
            Toast.makeText(itemView.getContext(), "Subscribed to " + stockCategory.getCategoryName(),
                Toast.LENGTH_SHORT).show();
          });
    }

Implementare l'annullamento dell'iscrizione all'argomento

  1. Allo stesso modo, nella condizione else, implementerai la chiamata all'API unsubscribeFromTopic . Qualcosa sulla falsariga di quanto segue:
void unsubscribeFromStockCategory() {
      // Making call to FCM for unsubscribing from the topic for stockCategory
      FirebaseMessaging.getInstance().unsubscribeFromTopic(stockCategory.getTopicName())
          .addOnSuccessListener(unused -> {
            // Unsubscribing action successful
            Log.i(TAG, "Unsubscribed from topic: " + stockCategory.getTopicName());
            Toast.makeText(itemView.getContext(), "Unsubscribed from " + stockCategory.getCategoryName(),
                Toast.LENGTH_SHORT).show();
          });
    }

Proviamolo

  1. Esegui l'app e attiva le opzioni della categoria di azioni per eseguire le azioni Iscriviti e Annulla iscrizione. Sembrerebbe qualcosa del genere:

sottoscrivi

Annulla l'iscrizione

7. Invio del tuo primo messaggio sull'argomento

In questo passaggio implementerai il codice lato server per inviare un messaggio di argomento FCM.

Implementare l'integrazione lato server per l'invio di messaggi sull'argomento

  1. Nel codice del server, passa a FcmSender.java e individua il metodo denominato sendMessageToFcmTopic .

56381dd1b40cde9c.png

  1. Nella prima riga, fornisci l'argomento FCM a cui desideri inviare il messaggio.
    • È una stringa nel formato: /topics/<Topic Name> . Ad esempio, /topics/Technology .
  2. Nelle righe successive creare un nuovo oggetto message (simile a quello definito nella funzione sendMessageToFcmRegistrationToken ).
    • La differenza sarà invece di impostare il campo Token dell'oggetto message , imposterai il campo Topic .
Message message = Message.builder()
        .putData("FOOTECH", "$1000")
        .setNotification(
            Notification.builder()
                .setTitle("Investor confidence in Tech Stocks growing")
                .setBody("Foo Tech leading the way in stock growth for Tech sector.")
                .build())
        .setTopic(topicName)
        .build();
  1. Ora aggiungi la chiamata all'istanza FirebaseMessaging per inviare il messaggio (identico alla chiamata di invio effettuata nella funzione sendMessageToFcmRegistrationToken ).
FirebaseMessaging.getInstance().send(message);
  1. Infine, aggiorna la funzione main e abilita la chiamata alla sola funzione sendMessageToFcmTopic .

9a6aa08dd7c28898.png

Invia messaggio e convalida ricevuta

  1. Prima di inviare il messaggio dell'argomento, assicurati innanzitutto che l'istanza dell'app sia iscritta all'argomento a cui vuoi inviare.
    1. Questo può essere fatto ruotando l'interruttore corrispondente. Per esempio:
    4668247408377712.png
  2. Ora puoi inviare il tuo messaggio di argomento eseguendo la funzione main di FcmSender.java .
  3. Come prima dovresti essere in grado di osservare la ricezione del messaggio sull'istanza dell'app.
    1. Istanza dell'app in primo piano
    c144721399f610fe.png
    1. Istanza dell'app in background
    44efc7dfd57e8e9a.png
  4. Bonus: prova ad annullare l'iscrizione all'argomento a cui hai inviato e inviare nuovamente il messaggio. Osserverai che il messaggio non viene consegnato all'istanza dell'app.

8. Invio del tuo primo messaggio sulla condizione dell'argomento

La funzione della condizione dell'argomento consente di inviare messaggi a una combinazione di argomenti consentendo di fornire una definizione del pubblico più espressiva.

Ad esempio, nella nostra app StockNews, considera la possibilità di inviare messaggi a un gruppo di istanze dell'app che sono abbonate ad argomenti relativi alla tecnologia o all'automotive. Un caso del genere può verificarsi, ad esempio, se si verifica un evento degno di nota che coinvolge Waymo.

Argomenti ti consente di esprimere la tua combinazione sotto forma di un'espressione booleana utilizzando i seguenti operatori

  • && : E logico. Ad esempio, 'Technology' in topics && 'Automotive' in topics : mira solo alle istanze dell'app sottoscritte sia agli argomenti relativi alla tecnologia che a quelli automobilistici.
  • || : OR logico. Ad esempio, 'Technology' in topics || 'Automotive' in topics : indirizza le istanze dell'app sottoscritte ad argomenti relativi alla tecnologia o all'automotive.
  • () : parentesi per il raggruppamento. Ad esempio, 'Technology' in topics && ('Automotive' in topics || 'Energy' in topics) - Si rivolge solo alle istanze dell'app sottoscritte a Tecnologia e ad argomenti Automotive o Energia.

Ulteriori informazioni su come creare richieste di invio per l'utilizzo di questa funzionalità.

Implementare l'integrazione lato server per l'invio di messaggi sulla condizione dell'argomento

  1. Nel codice del server, passa a FcmSender.java e individua il metodo denominato sendMessageToFcmTopicCondition .

3719a86c274522cf.png

  1. Nella prima riga, per la variabile topicCondition , fornisci la condizione dell'argomento a cui vuoi inviare il messaggio. Puoi impostarlo su: 'Technology' in topics && 'Automotive' in topics .
  2. Nelle righe successive, crea un nuovo oggetto message (simile a quello definito nella funzione sendMessageToFcmTopic ).
    1. La differenza sarà invece di impostare il campo Topic dell'oggetto, imposterai il campo Condition .
    Message message = Message.builder()
        .putData("FOOCAR", "$500")
        .setNotification(
            Notification.builder()
                .setTitle("Foo Car shows strong Q2 results")
                .setBody("Foo Car crosses 1B miles. Stocks rally.")
                .build())
        .setCondition(topicCondition)
        .build();
  1. Ora aggiungi la chiamata all'istanza FirebaseMessaging per inviare il messaggio (identico alla chiamata di invio effettuata nella funzione sendMessageToFcmTopic ).
FirebaseMessaging.getInstance().send(message);
  1. Infine, aggiorna la funzione main e abilita la chiamata solo alla funzione sendMessageToFcmTopicCondition .

db9588d40d2a0da6.png

Invia il messaggio e convalida la ricevuta

  1. Prima di inviare il messaggio relativo all'argomento, assicurati che l'istanza dell'app soddisfi la condizione dell'argomento specificata iscrivendo l'istanza dell'app agli argomenti relativi alla tecnologia e all'automotive.
  2. Ora puoi inviare il tuo messaggio di argomento eseguendo la funzione main di FcmSender.java .
  3. Come prima, dovresti essere in grado di osservare la ricezione del messaggio sull'istanza dell'app.
    1. Istanza dell'app in primo piano
    6f612ace15aa6515.png
    1. Istanza dell'app in background
    78044a56ac2359cb.png
  4. Bonus: ora puoi annullare l'iscrizione all'argomento Tecnologia e inviare nuovamente il messaggio sulla condizione dell'argomento. È necessario osservare che il messaggio non viene ricevuto dall'istanza dell'app.

9. Riepilogo

Facciamo un breve riepilogo di ciò che hai imparato fino a questo punto.

  • Come avviare una sottoscrizione/annullamento della sottoscrizione di un argomento da un'istanza dell'app.
  • Invio di un messaggio all'argomento e verifica della ricezione sulle istanze dell'app sottoscritte.
  • Invio di un messaggio a un argomento Condizione e verifica della ricezione su un'istanza dell'app che soddisfa la condizione.

Nella sezione successiva imparerai come sottoscrivere/annullare l'iscrizione di istanze di app agli argomenti senza dover creare un'istanza di chiamate dal lato client.

c0dc20655d392690.gif

10. Gestisci le sottoscrizioni agli argomenti dal lato server

Finora, in questo codelab, tutte le chiamate di sottoscrizione e annullamento delle iscrizioni agli argomenti vengono avviate da un'istanza dell'app.

Tuttavia, in alcuni casi d'uso, potresti voler gestire le sottoscrizioni agli argomenti dal lato server. Ad esempio, potresti voler iscrivere un sottogruppo della tua base di utenti esistente a un nuovo argomento senza attendere l'implementazione dell'app.

In questa sezione imparerai come utilizzare Firebase Admin SDK per sottoscrivere e annullare la sottoscrizione di un batch di token di registrazione FCM a un argomento effettuando chiamate dal lato server.

Implementare l'abbonamento lato server dei token di registrazione FCM all'argomento FCM

  1. Nel codice del server, passa alla classe FcmSubscriptionManager.java . Individua il metodo denominato subscribeFcmRegistrationTokensToTopic . Implementerai la chiamata all'API subscribeToTopic qui.

5d5709e7b3cbcb04.png

  1. Sottoscriviamo l'istanza dell'app all'argomento Energia. Per fare ciò, fornisci innanzitutto i dati per i due campi seguenti:
    1. registrationTokens : un elenco di stringhe separate da virgole che rappresentano i token di registrazione FCM per i quali desideri creare sottoscrizioni all'argomento.
    2. topicName : il nome dell'argomento per l'argomento Energia, ovvero /topics/Energy .
  2. Nelle prossime righe implementare il bando, secondo queste linee:
TopicManagementResponse response = FirebaseMessaging.getInstance().subscribeToTopic(
        registrationTokens, topicName);
  1. Puoi controllare TopicManagementResponse per alcune statistiche sui risultati di alto livello. Ad esempio la stampa del numero di sottoscrizioni di argomenti create correttamente utilizzando getSuccessCount .
System.out.printf("Num tokens successfully subscribed %d", response.getSuccessCount());
  1. Infine, nella funzione main abilita le chiamate solo alla funzione subscribeFcmRegistrationTokensToTopic .

Crea abbonamento e invia un messaggio sull'argomento

  1. A questo punto sei pronto per creare la sottoscrizione all'argomento e inviargli un messaggio.
  2. Esegui la funzione main della classe FcmSubscriptionManager.java . Questo creerà una sottoscrizione all'argomento.
  3. Ora, imposta il codice per inviare il messaggio. Simile a prima,
    1. In FcmSender.java individuare la funzione sendMessageToFcmTopic .
    2. Impostare topicName sull'argomento Energia, ovvero /topics/Energy .
    3. Crea un oggetto Message e indirizzalo all'argomento usando setTopic .
    4. Infine, aggiorna il metodo main per abilitare solo la funzione sendMessageToFcmTopic .
  4. Esegui la funzione main di FcmSender.java . Questo invierà il messaggio alla tua istanza dell'app e potrai osservarlo nella tua app come segue.
    1. Istanza dell'app in primo piano
    40ab6cf71e0e4116.png
    1. Istanza dell'app in background
    8fba81037198209e.png

Implementare l'annullamento dell'iscrizione lato server dei token di registrazione FCM all'argomento FCM

  1. Per annullare le iscrizioni agli argomenti lato server, utilizzare questa API unsubscribeFromTopic . Aggiungerai il codice pertinente alla funzione unsubscribeFcmRegistrationTokensFromTopic della classe FcmSubscriptionManager.java .

8d9e8ea9d34016bd.png

  1. L'implementazione del codice di annullamento dell'iscrizione lato server e la convalida del suo effetto inviando un messaggio sull'argomento è lasciato come esercizio per te.

11. Congratulazioni

Congratulazioni, hai utilizzato con successo gli argomenti FCM per inviare messaggi multicast a sottogruppi delle istanze dell'app. Ciò contribuirà a semplificare la tua capacità di raggiungere tempestivamente i tuoi utenti con contenuti pertinenti.

947def3eb33b1e4a.gif

Qual è il prossimo?

Ora che hai completato il codelab, considera la possibilità di provare argomenti per altre piattaforme utilizzando le seguenti guide:

Documenti di riferimento