Il tuo primo messaggio push multicast utilizzando argomenti FCM

1. Introduzione

Obiettivi

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

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

Panoramica degli argomenti

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

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

Gli argomenti dovrebbero essere utilizzati per contenuti disponibili al pubblico. Ad esempio, messaggi sugli aggiornamenti meteo. Se desideri inviare messaggi sensibili all'utente, utilizza Firebase Admin SDK per trasmettere messaggi multicast su più dispositivi .

Il multicasting basato sugli 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 dell'argomento.
  • Come gestire gli abbonamenti agli argomenti sul lato server ed eseguire abbonamenti e annullamenti in blocco.

Cosa costruirai

  • Un'app Android che si iscrive/annulla l'iscrizione agli argomenti e riceve messaggi quando vengono inviati agli argomenti.
  • Un'integrazione lato server che utilizza Firebase Admin SDK, che verrà utilizzato per inviare messaggi di argomento tramite 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. 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 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 . Procedi nel seguente modo per raggiungere il codice di avviamento. Contiene due directory StockNewsApp e StockNewsServer . Il primo contiene l'app Android iniziale e il secondo ha il codice lato server iniziale.

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 , assegna il nome StockNews al progetto Firebase 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'attivazione di Google Analytics. Ai fini di questo codelab, non ti serve. 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 necessarie per abilitare il supporto 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. Nella console Firebase , seleziona Impostazioni progetto nella parte superiore della barra di navigazione sinistra nell'icona 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 uguale a quello fornito nel AndroidManifest.xml del codice StockNewsApp iniziale. 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 di debug SHA-1 per questo codelab perché questa app non verrà rilasciata. Lascialo vuoto.
  3. Fare clic su Registra app .
  4. Proseguendo 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 iniziale. Troverai la tua app elencata nella pagina principale di Firebase Console.
  6. Copia il file google-services.json (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 iniziale

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

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

Nell'angolo in alto a sinistra della finestra del progetto, dovresti vedere qualcosa di simile all'immagine qui sotto se ti trovi 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 impiegare 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 il completamento dell'operazione prima di apportare modifiche al codice. Ciò consentirà ad Android Studio di inserire tutti i componenti necessari.

Inoltre, se ricevi il messaggio "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 .

Comprendere il codice di avvio dell'app Android

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

f04ff8f48d186dff.png

  • In AndroidManifest.xml è già aggiunto un gestore di callback MESSAGING_EVENT .
    • Questo gestore, StockNewsMessagingService.java , estende la classe FirebaseMessagingService che fornisce varie funzionalità correlate a Firebase Cloud Messaging. Consulta la documentazione di FirebaseMessagingService per ulteriori informazioni. 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 dei 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 Application Android denominata StockNewsApplication . a4982a8731492dfc.pngccde692f7f68dc5a.png
    • Questa classe sarà la prima ad essere istanziata all'avvio dell'App.
    • Nella funzione onCreate della classe StockNewsApplication , 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 stock.
  • SubscriptionAdapter.java implementa RecyclerView.Adapter che disegna la schermata di selezione della categoria stock.
    • Ciascuna categoria di azioni ha un nome e un pulsante di abbonamento accanto ad essa.
    • La modifica dell'interruttore dovrebbe effettuare una chiamata di iscrizione/annullamento iscrizione a un argomento FCM.
    • Implementerai questi inviti nelle prossime sezioni.
  • La classe model/StockCategories.java contiene un elenco di tutte le categorie di stock e i nomi degli argomenti associati.

b32663ec4e865a18.png

Esegui l'app iniziale

  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 hai 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

Tieni presente che potrebbero essere necessari alcuni minuti affinché IntellIj IDEA crei il tuo progetto, incluso il pull delle dipendenze richieste.

Comprendere il codice di avviamento del server

  • Il codice iniziale del server è un progetto Java basato su Gradle.
  • Al file build.gradle è già stata aggiunta la dipendenza dall'SDK 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 degni 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 : 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 l'iscrizione ai token di registrazione FCM da un argomento FCM.

Impostazione 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 e inizierà il download automatico del file della 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 dal classpath utilizzando il seguente codice. 8dffbee658e0bdd.png
  2. A questo punto il codice del server è pronto. Esegui Compila -> Crea progetto 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 , decommenta solo la funzione sendMessageToFcmRegistrationToken e fai clic su Esegui per eseguire il codice.
    1. Osservare come è impostato il token di registrazione FCM nel campo Token dell'oggetto message .
    2. Inoltre, nota come abbiamo utilizzato l'API di send dell'interfaccia 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 il messaggio apparire nella barra delle notifiche.

31203deca59c03fe.png

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

6. Implementare la sottoscrizione/annullamento della sottoscrizione all'argomento

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

Quando un utente dell'app attiva l'interruttore per una particolare categoria di titoli, verrà effettuata una chiamata di iscrizione o annullamento dell'iscrizione all'argomento.

Rivedi il codice

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

6c0614199e684f6.png

  • Il costruttore della classe configura un ascoltatore per l'attivazione/disattivazione della sottoscrizione utilizzando 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 da onBindViewHolder dell'adattatore RecyclerView per associare ViewHolder alla 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 stock per eseguire le azioni Iscriviti e Annulla iscrizione. Sarebbe qualcosa del genere:

sottoscrivi

Annulla l'iscrizione

7. Invio del tuo primo messaggio tematico

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 di 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à che 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 (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

Invia messaggio e convalida la ricevuta

  1. Prima di inviare il messaggio dell'argomento, assicurati innanzitutto che l'istanza dell'app sia iscritta all'argomento a cui desideri inviare.
    1. Questo può essere fatto ruotando l'interruttore corrispondente. Per esempio:
    4668247408377712.png
  2. Ora puoi inviare il messaggio del tuo 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 a inviare nuovamente il messaggio. Osserverai che il messaggio non viene recapitato all'istanza dell'app.

8. Invio del primo messaggio sulla condizione dell'argomento

La funzionalità della condizione dell'argomento ti consente di inviare messaggi a una combinazione di argomenti consentendoti 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 iscritte ad argomenti tecnologici o automobilistici. 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 sottoscritte sia ad Argomenti tecnologici che automobilistici.
  • || : OR logico. Ad esempio, 'Technology' in topics || 'Automotive' in topics : ha come target le istanze dell'app sottoscritte ad argomenti Tecnologia o Automotive.
  • () : parentesi per il raggruppamento. Ad esempio, 'Technology' in topics && ('Automotive' in topics || 'Energy' in topics) : ha come target solo le istanze dell'app sottoscritte agli argomenti Tecnologia e Automotive o Energia.

Ulteriori informazioni su come creare richieste di invio per utilizzare questa funzionalità.

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

  1. Tornando al 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 desideri 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à che 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 (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

Invia il messaggio e convalida la ricezione

  1. Prima di inviare il messaggio dell'argomento, assicurati innanzitutto che l'istanza dell'app soddisfi la condizione dell'argomento specificata iscrivendo l'istanza dell'app agli argomenti Tecnologia e Automotive.
  2. Ora puoi inviare il messaggio del tuo 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 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. Dovresti 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 iscrivere/annullare l'iscrizione delle istanze dell'app agli argomenti senza dover istanziare le 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 della sottoscrizione 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 utenti esistente a un nuovo argomento senza attendere il lancio dell'app.

In questa sezione imparerai come utilizzare Firebase Admin SDK 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, passa alla classe FcmSubscriptionManager.java . Individuare 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 seguenti due campi:
    1. registrationTokens : un elenco di stringhe separate da virgole che rappresentano i token di registrazione FCM per i quali desideri creare sottoscrizioni agli argomenti.
    2. topicName : il nome dell'argomento per l'argomento Energia, ovvero /topics/Energy .
  2. Nelle prossime righe implementiamo il bando, in questo senso:
TopicManagementResponse response = FirebaseMessaging.getInstance().subscribeToTopic(
        registrationTokens, topicName);
  1. Puoi controllare TopicManagementResponse per alcune statistiche sui risultati di alto livello. Ad esempio, stampare il numero di sottoscrizioni agli argomenti creati con successo 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 un abbonamento e invia un messaggio sull'argomento

  1. A questo punto sei pronto per creare la sottoscrizione dell'argomento e inviargli un messaggio.
  2. Esegui la funzione main della classe FcmSubscriptionManager.java . Ciò creerà una sottoscrizione all'argomento.
  3. Ora imposta il codice per inviare il messaggio. Simile a prima,
    1. Nel FcmSender.java individuare la funzione sendMessageToFcmTopic .
    2. Imposta topicName sull'argomento Energia, ad esempio /topics/Energy .
    3. Crea un oggetto Message e indirizzalo all'argomento utilizzando 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 all'istanza della tua 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 della sottoscrizione lato server dei token di registrazione FCM all'argomento FCM

  1. Per le annullamenti delle iscrizioni 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 inviando un messaggio di argomento vengono lasciate come esercizio.

11. Congratulazioni

Congratulazioni, hai utilizzato con successo gli argomenti FCM per inviare messaggi multicast ai sottogruppi delle istanze dell'app. Ciò ti aiuterà 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, valuta la possibilità di provare argomenti per altre piattaforme utilizzando le seguenti guide:

Documenti di riferimento