Il tuo primo messaggio push multicast che utilizza gli argomenti FCM

1. Introduzione

Obiettivi

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

Al termine, potrai sfruttare l'infrastruttura FCM per gestire questi sottogruppi e inviare messaggi push multicast.

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 gestire le iscrizioni a questi argomenti. L'azione di associare e dissociare un'istanza dell'app all'argomento è chiamata rispettivamente sottoscrizione e annullamento della sottoscrizione

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 multicast basato su argomenti è ottimizzato per la velocità effettiva.

Cosa imparerai a fare

  • 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 iscrizioni agli argomenti lato server ed eseguire iscrizioni e annullamenti di iscrizioni collettivi.

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 Firebase Admin, che verrà utilizzato per inviare messaggi di argomento 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.
  • Android Studio IDE per lo sviluppo di applicazioni per Android.
  • Un dispositivo per eseguire l'applicazione Android. Una delle seguenti opzioni:
    • 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 tuo progetto Firebase.

2. Configurazione

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 iniziale per questo codelab si trova nella directory messaging del ramo fcm-topics-codelab. Per raggiungere il codice iniziale, segui questi passaggi. Contiene due directory: StockNewsApp e StockNewsServer. Il primo contiene l'app Android iniziale, mentre il secondo contiene il codice lato server iniziale.

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

La versione completata di questo codelab si trova nella directory messaging/fcm-topics-codelab/completed.

Crea un progetto Firebase

  1. Accedi alla console Firebase utilizzando il tuo Account Google.
  2. Fai clic sul pulsante per creare un nuovo progetto, quindi inserisci un nome per il progetto (ad esempio StockNews).
  3. Fai clic su Continua.
  4. Se richiesto, leggi e accetta i termini di Firebase, quindi fai clic su Continua.
  5. (Facoltativo) Attiva l'assistenza AI nella console Firebase (denominata "Gemini in Firebase").
  6. Per questo codelab non hai bisogno di Google Analytics, quindi disattiva l'opzione Google Analytics.
  7. Fai clic su Crea progetto, attendi il provisioning del progetto, poi fai clic su Continua.

Complimenti! Hai appena creato il tuo progetto Firebase.

3. Configurazione dell'app Firebase specifica per la piattaforma

La maggior parte delle modifiche al codice necessarie per attivare il supporto di Firebase è già stata eseguita nel progetto su cui stai lavorando. Tuttavia, per aggiungere il supporto per le piattaforme mobile, devi:

  • Registra la piattaforma che preferisci 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, nell'icona a forma di ingranaggio Impostazioni, e fai clic sull'icona Android in Le tue app nella pagina Generali.

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

  1. Il valore importante da fornire è il nome del pacchetto Android. Imposta il valore su com.ticker.stocknews.
    1. Il nome del pacchetto fornito qui deve corrispondere a quello fornito in AndroidManifest.xml del codice iniziale StockNewsApp. Per individuarlo o modificarlo, segui questi passaggi:
      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 Nome 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. Continua nella console Firebase e 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 elencata 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 iniziale.

Una volta caricato il progetto, potresti anche visualizzare un avviso che indica che Git non sta monitorando tutte le modifiche locali. Puoi fare clic su "Ignora" o sulla "X" in alto a destra. Non verrà eseguito il push di alcuna modifica nel repository Git.

Nell'angolo in alto a sinistra della finestra del progetto, dovresti vedere un'immagine simile a quella riportata di seguito se ti trovi nella visualizzazione Android. Se ti trovi nella visualizzazione Progetto, dovrai espandere il progetto per visualizzare 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 vedrai un indicatore di caricamento:

4bc64eb3b99eb0ae.png

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

Inoltre, se viene visualizzato il messaggio "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 iniziale dell'app Android

  • Il codice iniziale è un'app per Android leggera con funzionalità e UI minime.
  • Una dipendenza dall'SDK firebase-messaging è 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à correlate a Firebase Cloud Messaging. Per saperne di più, 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, 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 viene fornita anche una classe Android Application denominata StockNewsApplication. a4982a8731492dfc.pngccde692f7f68dc5a.png
    • Questa classe sarà la prima a essere istanziata 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 scelte della categoria stock.
  • SubscriptionAdapter.java implementa RecyclerView.Adapter, che disegna la schermata di selezione della categoria di scorte.
    • Ogni categoria di stock ha un nome e un pulsante di attivazione/disattivazione dell'abbonamento.
    • La modifica del pulsante di attivazione/disattivazione dovrebbe generare una chiamata di iscrizione/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 stock e i relativi nomi degli argomenti.

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 Android o l'emulatore di destinazione e premi il pulsante di esecuzione.

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, che verrà utilizzato nei passaggi successivi.

927eb66bc909f36b.png

5. Inviare un messaggio di prova

Ora puoi inviare un messaggio di prova all'istanza dell'app che hai configurato nell'ultimo passaggio.

Importa il codice di avvio del server

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 creazione del progetto da parte di IntelliJ IDEA potrebbe richiedere alcuni minuti, incluso il recupero delle dipendenze richieste.

Informazioni sul codice di avvio del server

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

650fc733298588f8.png

  • Infine, esistono due classi:
    • FcmSender.java: Questa lezione contiene i seguenti metodi di notazione:
      • 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: questa classe contiene metodi che consentono di gestire gli abbonamenti 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 registrazione di uno o più token di registrazione FCM da un argomento FCM.

Configurare il codice del server

  1. Innanzitutto, dobbiamo configurare un service account 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 Service account e fai clic su Crea service account. 84b128cc5dac0a85.png
    3. Ora fai clic sul pulsante Genera nuova chiave privata e inizierà 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 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 che hai copiato dalla sezione Esegui l'app iniziale nel campo registrationToken.
  2. Nella funzione main, rimuovi il commento solo dalla funzione sendMessageToFcmRegistrationToken e fai clic su Esegui per eseguire il codice.
    1. Osserva come il token di registrazione FCM viene impostato nel campo Token dell'oggetto message.
    2. Inoltre, nota come abbiamo utilizzato l'API send dell'interfaccia FirebaseMessaging.

52e4a3ec3f816473.png

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

d3540ec1089f97dd.png

  1. Quando l'istanza dell'app è in background, il messaggio viene 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 tuo server.

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

In questo passaggio implementerai le azioni di iscrizione e annullamento dell'iscrizione agli argomenti nel pulsante di attivazione/disattivazione della categoria Azioni dell'app per Android.

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

Codice di revisione

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

6c0614199e684f6.png

  • Il costruttore della classe configura un listener per l'attivazione/disattivazione dell'abbonamento utilizzando setOnCheckedChangeListener.
  • A seconda dell'attivazione/disattivazione dell'opzione, le azioni di iscrizione e annullamento dell'iscrizione vengono eseguite chiamando rispettivamente i metodi subscribeToStockCategory e unsubscribeFromStockCategory.
  • Il metodo setData viene chiamato da onBindViewHolder di RecyclerView Adapter per associare ViewHolder alla categoria di stock appropriata.

Implementare l'iscrizione agli argomenti

  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. Qualcosa del genere:
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 della categoria di azioni per eseguire le azioni Iscriviti e Annulla iscrizione. L'aspetto sarà simile al seguente:

Iscriviti

Annulla iscrizione

7. Invio del primo messaggio dell'argomento

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

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

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

56381dd1b40cde9c.png

  1. Nella prima riga, fornisci l'argomento FCM a cui vuoi inviare il messaggio.
    • È 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 attiva la chiamata solo alla funzione sendMessageToFcmTopic.

9a6aa08dd7c28898.png

Inviare un messaggio e convalidare la ricezione

  1. Prima di inviare il messaggio dell'argomento, assicurati che l'istanza dell'app sia iscritta all'argomento a cui vuoi inviare il messaggio.
    1. Per farlo, basta attivare/disattivare l'opzione corrispondente. Ad esempio:
    4668247408377712.png
  2. Ora puoi inviare il messaggio dell'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. Bonus: prova ad 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 di condizione dell'argomento

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

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

Gli argomenti ti consentono di esprimere la tua 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 dell'app che hanno sottoscritto sia gli argomenti Tecnologia che Automobili.
  • || : OR logico. Ad esempio, 'Technology' in topics || 'Automotive' in topics ha come target le istanze dell'app che hanno sottoscritto gli argomenti Tecnologia o Automobili.
  • () : Parentesi per il raggruppamento. Ad esempio, 'Technology' in topics && ('Automotive' in topics || 'Energy' in topics): ha come target solo le istanze dell'app che hanno eseguito l'iscrizione a Tecnologia e agli argomenti Automotive o Energia.

Scopri di più su come creare richieste di invio per utilizzare questa funzionalità.

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

  1. Nel codice del server, vai 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 è 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 attiva la chiamata solo alla funzione sendMessageToFcmTopicCondition.

db9588d40d2a0da6.png

Inviare il messaggio e convalidare la ricezione

  1. Prima di inviare il messaggio dell'argomento, assicurati che l'istanza dell'app soddisfi la condizione dell'argomento specificata eseguendo la sottoscrizione dell'istanza dell'app agli argomenti Tecnologia e Automotive.
  2. Ora puoi inviare il messaggio dell'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
    6f612ace15aa6515.png
    1. Istanza di app in background
    78044a56ac2359cb.png
  4. Bonus: ora puoi annullare l'iscrizione all'argomento Tecnologia e inviare nuovamente il messaggio relativo alla condizione dell'argomento. Dovresti notare che il messaggio non viene ricevuto dall'istanza dell'app.

9. Riepilogo

Facciamo un breve riepilogo di ciò che hai imparato finora.

  • Come avviare l'iscrizione / l'annullamento dell'iscrizione a un argomento da un'istanza dell'app.
  • Invio di un messaggio all'argomento e verifica della ricezione sulle istanze dell'app a cui è stato effettuato l'abbonamento.
  • Invio di un messaggio a una condizione dell'argomento e verifica della ricezione su un'istanza dell'app che soddisfa la condizione.

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

c0dc20655d392690.gif

10. Gestire le iscrizioni agli argomenti dal lato server

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

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

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

Implementare la sottoscrizione lato server dei token di registrazione FCM all'argomento FCM

  1. Nel codice del server, vai alla classe FcmSubscriptionManager.java. Individua il metodo denominato subscribeFcmRegistrationTokensToTopic. Qui implementerai la chiamata all'API subscribeToTopic.

5d5709e7b3cbcb04.png

  1. Abboniamoci all'istanza dell'app all'argomento Energy. A questo scopo, fornisci innanzitutto i dati per i seguenti due campi:
    1. registrationTokens: un elenco separato da virgole di stringhe che rappresentano i token di registrazione FCM per cui vuoi creare iscrizioni agli argomenti.
    2. topicName: il nome dell'argomento per l'argomento Energia, ovvero /topics/Energy.
  2. Nelle righe successive implementa la chiamata, in questo modo:
TopicManagementResponse response = FirebaseMessaging.getInstance().subscribeToTopic(
        registrationTokens, topicName);
  1. Puoi esaminare TopicManagementResponse per alcune statistiche di alto livello sui risultati. Ad esempio, stampa il numero di sottoscrizioni 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.

Creare una sottoscrizione e inviare un messaggio all'argomento

  1. A questo punto, puoi creare la sottoscrizione all'argomento e inviare 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 prima,
    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 abilitare solo la funzione sendMessageToFcmTopic.
  4. Esegui la funzione main di FcmSender.java. Il messaggio verrà inviato all'istanza dell'app e potrai osservarlo nella tua app come segue.
    1. Istanza dell'app in primo piano
    40ab6cf71e0e4116.png
    1. Istanza di app in background
    8fba81037198209e.png

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

  1. Per l'annullamento dell'iscrizione agli argomenti lato server, utilizza 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 tramite l'invio di un messaggio all'argomento sono lasciate come esercizio per te.

11. Complimenti

Congratulazioni, hai utilizzato correttamente gli argomenti FCM per inviare messaggi multicast a sottogruppi delle istanze della tua app. In questo modo, potrai raggiungere più facilmente e tempestivamente i tuoi utenti con contenuti pertinenti.

947def3eb33b1e4a.gif

Passaggi successivi

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

Documenti di riferimento