Il tuo primo messaggio push multicast che utilizza gli argomenti FCM

1. Introduzione

Obiettivi

In questo codelab imparerai a eseguire l'instrumentazione della tua app multipiattaforma in modo da poter trasmettere in multicast i messaggi push a vari sottogruppi delle tue istanze di app utilizzando gli argomenti FCM.

Al termine, sarai in grado di utilizzare 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 messaggi.

FCM fornisce le API per inviare messaggi e gestire le iscrizioni a questi argomenti. L'azione di associazione e disattivazione di un'istanza dell'app all'argomento è chiamata rispettivamente sottoscrizione e annullamento dell'iscrizione

Gli argomenti devono essere utilizzati per i contenuti disponibili pubblicamente. Ad esempio, messaggi sugli aggiornamenti meteo. Se vuoi inviare messaggi sensibili per gli utenti, utilizza l'SDK Firebase Admin per trasmettere messaggi su più dispositivi.

Il multicasting basato sugli argomenti è ottimizzato per il throughput.

Cosa imparerai a fare

  • Come abbonarsi (e annullare l'iscrizione) degli utenti ad 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 gli abbonamenti agli argomenti sul lato server ed eseguire sottoscrizioni e annullamenti delle iscrizioni in blocco.

Cosa creerai

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

Che cosa ti serve

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

2. Preparazione

Ottieni il codice

Clona il repository GitHub dalla riga di comando:

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

Il codice campione verrà clonato nella directory fcm-codelab.

cd fcm-codelab

L'app di base per questo codelab si trova nella directory messaging della filiale fcm-topics-codelab. Segui questi passaggi per visualizzare il codice di avvio. Contiene due directory StockNewsApp e StockNewsServer. La prima contiene l'app Android iniziale, mentre la seconda ha il codice lato server iniziale.

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

La versione completata 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, assegna al progetto Firebase il nome StockNews e fai clic su Continua. Nota: ricorda l'ID del progetto Firebase (oppure fai clic sull'icona Modifica per impostare l'ID progetto che preferisci).

fc08f9a7808e4553.png

  1. Puoi saltare l'attivazione di Google Analytics. Ai fini di questo codelab, non è necessario. Fai clic su Continua.
  2. Fai clic su Crea progetto.

Complimenti! 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 per la piattaforma

La maggior parte delle modifiche al codice necessarie per attivare l'assistenza Firebase è già stata registrata nel progetto a cui stai lavorando. Tuttavia, per aggiungere il supporto delle piattaforme per dispositivi mobili, devi:

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

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

84e0b3199bef6d8a.pngConfigurare Android

  1. Nella console Firebase, seleziona Impostazioni progetto nella parte superiore della barra di navigazione a sinistra nel cog Impostazioni e fai clic sull'icona Android in Le tue app nella pagina Generale.

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

  1. Il valore importante da fornire è il nome del pacchetto Android. Imposta la temperatura su com.ticker.stocknews.
    1. Il nome del pacchetto fornito qui deve essere lo stesso fornito in AndroidManifest.xml del codice di StockNewsApp iniziale. Per trovarlo o modificarlo, segui questi passaggi:
      1. Nella directory StockNewsApp, apri il file app/src/main/AndroidManifest.xml.
      2. Nell'elemento manifest, trova il valore di 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 Nome del pacchetto Android.
  2. Per questo codelab non è necessario il certificato di firma di debug SHA-1, perché questa app non verrà rilasciata. Lascia vuoto questo campo.
  3. Fai 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 passaggi di configurazione rimanenti, poiché tutto il resto è già configurato nel codice dell'app iniziale. Troverai la tua app nella pagina principale della Console Firebase.
  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

Ora puoi iniziare a lavorare alla tua app. Innanzitutto, crea ed esegui l'app.

Importare l'app iniziale

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 visualizzare un avviso che indica che Git non sta monitorando tutte le modifiche locali. Puoi fare clic su "Ignora" o la "X" in alto a destra. Non eseguirai il push di alcuna modifica nel repository Git.

Se sei nella visualizzazione Android, nell'angolo in alto a sinistra della finestra del progetto dovresti vedere qualcosa di simile all'immagine seguente. Se sei nella visualizzazione Progetto, devi espandere il progetto per vedere la stessa cosa.

b574ea0089ee87c6.png

Tieni presente che Android Studio potrebbe impiegare diversi secondi per compilare il progetto in background per la prima volta. Durante questo periodo, nella barra di stato in fondo ad Android Studio viene visualizzato un indicatore di attesa:

4bc64eb3b99eb0ae.png

Ti consigliamo di attendere il termine di questa operazione prima di apportare modifiche al codice. In questo modo, Android Studio potrà recuperare tutti i componenti necessari.

Inoltre, se viene visualizzato il messaggio "Vuoi ricaricare per applicare le modifiche alla lingua?" o un messaggio simile, seleziona "Sì".

Configurazione dell'emulatore

Se hai bisogno di aiuto per configurare un emulatore Android, consulta l'articolo Eseguire l'app.

Informazioni sul codice di avvio dell'app per Android

  • Il codice di base è un'app per Android leggera con funzionalità e UI minime.
  • Al file app/build.gradle è già stata aggiunta una dipendenza all'SDK firebase-messaging .

f04ff8f48d186dff.png

  • Nel AndroidManifest.xml, è già stato aggiunto un gestore di callback MESSAGING_EVENT.
    • Questo gestore, StockNewsMessagingService.java, estende la classe FirebaseMessagingService, che fornisce varie funzionalità correlate a Firebase Cloud Messaging. Per saperne di più, consulta la documentazione di FirebaseMessagingService. b843c4d33ee53166.png
    88fad1960f4a6ff5.png
    • La funzione onNewToken viene chiamata quando il token di registrazione FCM viene creato o aggiornato. Per ulteriori informazioni, consulta Monitorare la generazione di token.
    • La funzione onMessageReceived viene chiamata quando viene ricevuto un messaggio e l'app è in primo piano. Al momento, registra semplicemente il messaggio ricevuto.
  • Inoltre, in AndroidManifest.xml è fornita anche una classe Application per Android denominata StockNewsApplication. a4982a8731492dfc.pngccde692f7f68dc5a.png
    • Questo sarà il primo a essere istanziato all'avvio dell'app.
    • Nella funzione onCreate della classe StockNewsApplication viene aggiunta una chiamata di creazione del token di registrazione FCM. Verrà generato un token di registrazione FCM valido e verrà registrato.
  • MainActivity.java aggiunge RecyclerView che mostra le opzioni della categoria di magazzino.
  • SubscriptionAdapter.java implementa RecyclerView.Adapter che disegna la schermata di selezione della categoria di magazzino.
    • A ogni categoria stock è presente un nome e un pulsante di attivazione/disattivazione dell'abbonamento accanto.
    • La modifica del pulsante di attivazione/disattivazione dovrebbe effettuare una chiamata di sottoscrizione/annullamento dell'iscrizione a un argomento FCM.
    • Implementerai queste chiamate nelle sezioni successive.
  • La classe model/StockCategories.java contiene un elenco di tutte le categorie di azioni e i nomi degli argomenti associati.

b32663ec4e865a18.png

Eseguire l'app iniziale

  1. Collega il dispositivo Android al computer o avvia un emulatore.
  2. Nella barra degli strumenti in alto, seleziona il dispositivo o l'emulatore Android 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, l'interfaccia utente dell'app non cambierà.
    1. Copia e salva il token di registrazione FCM, che verrà utilizzato nei passaggi successivi.

927eb66bc909f36b.png

5. Invia un messaggio di prova

Ora è tutto pronto per inviare un messaggio di prova all'istanza dell'app che hai configurato nell'ultimo passaggio.

Importa il codice del server di avvio

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

La visualizzazione del progetto nella barra di navigazione a sinistra dovrebbe essere simile alla seguente:

da20711f6527dff6.png

Tieni presente che la compilazione del progetto in IntelliJ IDEA potrebbe richiedere alcuni minuti, incluse le dipendenze richieste.

Informazioni sul codice di avvio del server

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

650fc733298588f8.png

  • Infine, esistono due classi:
    • FcmSender.java: questo tipo 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 dell'argomento FCM.
    • FcmSubscriptionManager.java: questo tipo contiene metodi che consentono di gestire le iscrizioni agli argomenti lato server.
      • initFirebaseSDK: inizializza l'SDK firebase-admin.
      • subscribeFcmRegistrationTokensToTopic: iscriviti ai token di registrazione FCM a un argomento FCM.
      • unsubscribeFcmRegistrationTokensFromTopic: annulla l'iscrizione dei token di registrazione FCM da un argomento FCM.

Configurazione del codice del server

  1. Innanzitutto, dobbiamo configurare un account di 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 del 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 per avviare il download automatico del file della chiave.
    4. Rinomina il file della chiave in service-account.json e copialo nella cartella messaging/fcm-topics-codelab/starter/StockNewsServer/src/main/resources.
    5. Sia FcmSender.java che FcmSubscriptionManager.java caricano il file service-account.json dal classpath utilizzando il seguente codice. 8dffbee658e0bdd.png
  2. A questo punto, il codice del server è pronto. Esegui compilazione -> Compila progetto dalla barra dei menu in alto.

Invio di un messaggio di prova

  1. In FcmSender.java, individua la funzione sendMessageToFcmRegistrationToken e inserisci nel campo registrationToken il token di registrazione FCM che hai copiato dalla sezione Esegui l'app iniziale.
  2. Nella funzione main, rimuovi il commento solo dalla funzione sendMessageToFcmRegistrationToken e fai clic su Esegui per eseguire il codice.
    1. Osserva come è impostato il token di registrazione FCM nel campo Token dell'oggetto message.
    2. Inoltre, nota come abbiamo utilizzato l'API send dell'interfaccia FirebaseMessaging.

52e4a3ec3f816473.png

  1. Verrà inviato un messaggio all'istanza dell'app che hai configurato nel passaggio precedente.
  2. Quando l'istanza dell'app è in primo piano, dovresti vedere i contenuti del messaggio registrati.

d3540ec1089f97dd.png

  1. Quando l'istanza dell'app è in background, il messaggio verrà visualizzato nella barra delle notifiche.

31203deca59c03fe.png

Ottimo, hai utilizzato l'SDK Firebase Admin per inviare messaggi a un'istanza dell'app. Scopri di più sull'utilizzo dell'SDK Firebase Admin nel server.

6. Implementare la sottoscrizione/l'annullamento dell'iscrizione agli argomenti

In questo passaggio implementerai le azioni di sottoscrizione agli argomenti e di annullamento dell'iscrizione sul pulsante di attivazione/disattivazione Categoria stock dell'app per Android.

Quando un utente dell'app attiva/disattiva l'opzione per una determinata categoria di stock, viene effettuata una chiamata di abbonamento o annullamento dell'abbonamento a un argomento.

Rivedi il codice

  • Vai alla classe SubscriptionAdapter.java nel codice dell'app per Android e individua la classe RecyclerViewViewHolder.

6c0614199e684f6.png

  • Il costruttore della classe imposta un ascoltatore per l'opzione di attivazione/disattivazione della sottoscrizione utilizzando setOnCheckedChangeListener.
  • A seconda dell'opzione selezionata, le azioni di iscrizione e annullamento dell'iscrizione vengono eseguite chiamando rispettivamente i metodi subscribeToStockCategory e unsubscribeFromStockCategory.
  • Il metodo setData viene chiamato da onBindViewHolder dell'adattatore RecyclerView per associare il ViewHolder alla categoria di magazzino appropriata.

Implementa la sottoscrizione all'argomento

  1. Nel metodo subscribeToStockCategory, implementerai la chiamata all'API subscribeToTopic dell'oggetto FirebaseMessaging. Il codice potrebbe avere un aspetto simile al seguente:
   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 agli argomenti

  1. Analogamente, nella condizione else implementerai la chiamata all'API unsubscribeFromTopic. Ad esempio:
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();
          });
    }

Proviamo

  1. Esegui l'app e attiva/disattiva le opzioni Categoria stock per eseguire le azioni di iscrizione e annullamento dell'iscrizione. L'URL avrà il seguente aspetto:

Iscriviti

Annulla iscrizione

7. Invio del primo messaggio su un argomento

In questo passaggio implementerai il codice lato server per inviare un messaggio relativo all'argomento FCM.

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

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

56381dd1b40cde9c.png

  1. Nella prima riga, indica l'argomento FCM a cui vuoi inviare il messaggio.
    • Si tratta di una stringa nel formato: /topics/<Topic Name>. Ad esempio, /topics/Technology.
  2. Nelle righe successive, crea un nuovo oggetto message (simile a quello definito nella funzione sendMessageToFcmRegistrationToken).
    • La differenza è che, anziché 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 (identica alla chiamata di invio effettuata nella funzione sendMessageToFcmRegistrationToken).
FirebaseMessaging.getInstance().send(message);
  1. Infine, aggiorna la funzione main e abilita la chiamata solo alla funzione sendMessageToFcmTopic.

9a6aa08dd7c28898.png

Inviare un messaggio e convalidare la ricezione

  1. Prima di inviare il messaggio relativo all'argomento, assicurati che l'istanza dell'app sia sottoscritta all'argomento a cui vuoi inviare l'app.
    1. Per farlo, capovolgi il pulsante di attivazione/disattivazione corrispondente. Ad esempio:
    4668247408377712.png
  2. Ora puoi inviare il messaggio relativo all'argomento eseguendo la funzione main di FcmSender.java.
  3. Come prima, dovresti essere in grado di osservare la ricezione del messaggio nell'istanza dell'app.
    1. Istanza dell'app in primo piano
    c144721399f610fe.png
    1. Istanza di app in background
    44efc7dfd57e8e9a.png
  4. Suggerimento: prova a annullare l'iscrizione all'argomento a cui hai inviato il messaggio e a inviarlo di nuovo. Noterai che il messaggio non viene recapitato all'istanza dell'app.

8. Invio del primo messaggio con condizione dell'argomento

La funzionalità della condizione dell'argomento ti consente di inviare messaggi a una combinazione di argomenti, in modo da fornire una definizione del pubblico più espressiva.

Ad esempio, nella nostra app StockNews, valuta la possibilità di inviare messaggi a un gruppo di istanze di app con abbonamenti ad argomenti Tecnologia o Auto e motori. Un caso del genere può verificarsi, ad esempio, se c'è un evento degno di nota che riguarda Waymo.

Topics ti consente di esprimere la combinazione sotto forma di espressione booleana utilizzando i seguenti operatori

  • && : AND logico. Ad esempio, 'Technology' in topics && 'Automotive' in topics: ha come target solo le istanze di app che hanno sottoscritto sia Argomenti Tecnologia sia Argomenti Automotive.
  • ||: OR logico. Ad esempio, 'Technology' in topics || 'Automotive' in topics: ha come target le istanze di app che sono iscritte agli argomenti Tecnologia o Automotive.
  • () : parentesi per il raggruppamento. Ad esempio, 'Technology' in topics && ('Automotive' in topics || 'Energy' in topics): sceglie come target solo le istanze di app che sono iscritte agli argomenti Tecnologia e Auto e motori o Energia.

Scopri di più su come creare richieste di invio per l'utilizzo di questa funzionalità.

Implementare l'integrazione lato server per l'invio del messaggio della condizione dell'argomento

  1. Torna al codice del server, vai a FcmSender.java e individua il metodo denominato sendMessageToFcmTopicCondition.

3719a86c274522cf.png

  1. Nella prima riga, per la variabile topicCondition, specifica 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 è che, anziché 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 (identica 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

Inviare il messaggio e convalidare la conferma

  1. Prima di inviare il messaggio relativo all'argomento, assicurati che l'istanza dell'app soddisfi la condizione specificata per l'argomento sottoscrivendo l'istanza dell'app agli argomenti Tecnologia e Auto e motori.
  2. Ora puoi inviare il tuo messaggio relativo a un argomento eseguendo la funzione main di FcmSender.java.
  3. Come prima, dovresti essere in grado di osservare la ricevuta del messaggio sull'istanza dell'app.
    1. Istanze 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. Tieni presente 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 o annullare l'iscrizione a un argomento da un'istanza di app.
  • Invio di un messaggio all'argomento e verifica della ricezione nelle istanze di app sottoscritte.
  • Invio di un messaggio a una condizione argomento e verifica della ricezione su un'istanza dell'app che soddisfa la condizione.

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

c0dc20655d392690.gif

10. Gestione delle sottoscrizioni agli argomenti dal lato server

Fino a questo momento, in questo codelab, tutte le chiamate di abbonamento e annullamento dell'abbonamento agli argomenti vengono avviate da un'istanza dell'app.

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

In questa sezione imparerai a utilizzare l'SDK Firebase Admin per iscriverti e annullare l'iscrizione di un batch di token di registrazione FCM a un argomento effettuando chiamate lato server.

Implementare l'iscrizione 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 farlo, innanzitutto fornisci i dati per i seguenti due campi:
    1. registrationTokens: un elenco separato da virgole di stringhe che rappresentano i token di registrazione FCM per i quali vuoi creare iscrizioni ad argomenti.
    2. topicName: il nome dell'argomento per l'argomento Energia, ad esempio /topics/Energy.
  2. Nelle righe successive, implementa la chiamata come segue:
TopicManagementResponse response = FirebaseMessaging.getInstance().subscribeToTopic(
        registrationTokens, topicName);
  1. Puoi controllare la TopicManagementResponse per alcune statistiche di alto livello sui risultati. Ad esempio, è possibile stampare il numero di iscrizioni agli 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 una sottoscrizione e invia un messaggio relativo all'argomento

  1. A questo punto, puoi creare la sottoscrizione all'argomento e inviarvi un messaggio.
  2. Esegui la funzione main della classe FcmSubscriptionManager.java. Verrà creata una sottoscrizione per l'argomento.
  3. Ora configura il codice per inviare il messaggio. Come in precedenza,
    1. In FcmSender.java, individua la funzione sendMessageToFcmTopic.
    2. Imposta topicName sull'argomento Energia, ad esempio /topics/Energy.
    3. Crea un oggetto Message e scegli come target l'argomento utilizzando setTopic.
    4. Infine, aggiorna il metodo main per attivare solo la funzione sendMessageToFcmTopic.
  4. Esegui la funzione main di FcmSender.java. Il messaggio verrà inviato all'istanza dell'app e potrai osservarlo nell'app come segue.
    1. Istanza dell'app in primo piano
    40ab6cf71e0e4116.png
    1. Istanza di app in background
    8fba81037198209e.png

Implementare la disattivazione lato server dei token di registrazione FCM per l'argomento FCM

  1. Per le annullate iscrizioni agli argomenti lato server, utilizza questa API unsubscribeFromTopic. Dovrai aggiungere il codice pertinente alla funzione unsubscribeFcmRegistrationTokensFromTopic del tipo FcmSubscriptionManager.java.

8d9e8ea9d34016bd.png

  1. L'implementazione del codice di annullamento dell'iscrizione lato server e la convalida del relativo effetto inviando un messaggio dell'argomento sono un esercizio che ti lasciamo fare.

11. Complimenti

Complimenti, hai utilizzato correttamente gli argomenti FCM per inviare messaggi multicast ai sottogruppi delle tue istanze di app. In questo modo, potrai raggiungere in modo tempestivo gli utenti con contenuti pertinenti.

947def3eb33b1e4a.gif

Quali sono i passaggi successivi?

Ora che hai completato il codelab, puoi provare gli argomenti per altre piattaforme utilizzando le seguenti guide:

Documenti di riferimento