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 eseguire il push multicast dei messaggi a vari sottogruppi delle istanze delle tue 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 mantenere le sottoscrizioni 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 agli utenti, utilizza l'SDK Admin Firebase per la trasmissione in multicast di messaggi su più dispositivi.

Il multicasting basato su argomenti è ottimizzato per la velocità effettiva.

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

Cosa creerai

  • Un'app per Android che sottoscrive/annulla l'iscrizione agli argomenti e riceve 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 di Gradle durante l'installazione.
  • IDE di Android Studio per sviluppare app per Android.
  • Un dispositivo per eseguire l'applicazione per Android. Una di queste voci:
    • L'emulatore Android. (la configurazione è richiesta 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 iniziale per questo codelab si trova nella directory messaging del ramo 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 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 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).

2017-07-29.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.pngConfigura 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 stringa dell'attributo package. Questo valore è il nome del pacchetto Android.
  1. Nella finestra di dialogo di 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. 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.

Importa 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 delle modifiche al repository Git.

Se ti trovi nella visualizzazione Android, nell'angolo in alto a sinistra della finestra del progetto dovresti vedere qualcosa di simile all'immagine seguente. (Se ti trovi nella vista Progetto, devi espandere il progetto per vedere lo stesso elemento)

b574ea0089ee87c6.png

Tieni presente che Android Studio potrebbe impiegare diversi secondi per compilare il progetto in background per la prima volta. Durante questo periodo di tempo viene visualizzata una rotellina nella barra di stato nella parte inferiore di Android Studio:

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 assistenza per configurare un emulatore Android, leggi l'articolo Eseguire l'app.

Comprendere il codice iniziale 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

  • 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 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 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 è fornita anche una classe Application per Android denominata StockNewsApplication. a4982a8731492dfc.pngccde692f7f68dc5a.png
    • Questo corso sarà il primo a creare un'istanza all'avvio dell'app.
    • Nella funzione onCreate della classe StockNewsApplication viene aggiunta una chiamata di creazione di token di registrazione FCM. Verrà generato un token di registrazione FCM valido e verrà registrato.
  • L'MainActivity.java aggiunge il valore RecyclerView che mostra le scelte relative alla categoria stock.
  • SubscriptionAdapter.java implementa la colonna RecyclerView.Adapter, che mostra la schermata di selezione della categoria stock.
    • 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 l'emulatore o il dispositivo Android target 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 avere il seguente aspetto:

Da20711f6527dff6.png

Tieni presente che potrebbero essere necessari alcuni minuti prima che IntellIj IDEA crei il tuo progetto, incluso il pull delle 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, ci sono due classi, ovvero:
    • 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 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: sottoscrivi i 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 build -> Crea 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 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 server.

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

In questo passaggio implementerai le azioni di sottoscrizione e annullamento dell'abbonamento agli argomenti nell'opzione di attivazione/disattivazione Categoria di magazzino 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 configura un listener 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 dal onBindViewHolder dell'adattatore RecyclerView Adapter per associare il ViewHolder alla categoria stock 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 della sottoscrizione dell'argomento

  1. Analogamente, nella condizione else implementerai la chiamata all'API unsubscribeFromTopic. Qualcosa del tipo:
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 argomento

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

Implementa l'integrazione lato server per l'invio di un messaggio relativo all'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 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 sarà che invece di impostare il campo Token dell'oggetto message, sarai tu a impostare 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 dell'argomento, assicurati che l'istanza dell'app sia iscritta all'argomento a cui vuoi inviare il messaggio.
    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 in precedenza, dovresti essere in grado di osservare la ricezione del messaggio sull'istanza dell'app.
    1. Istanze dell'app in primo piano
    c144721399f610fe.png
    1. Istanza dell'app in background
    44efc7dfd57e8e9a.png
  4. Bonus: prova ad annullare l'iscrizione all'argomento che hai inviato e a inviare di nuovo il messaggio. Noterai che il messaggio non viene recapitato all'istanza dell'app.

8. Invio del primo messaggio sulle condizioni dell'argomento in corso...

La funzionalità delle condizioni dell'argomento consente di inviare messaggi a una combinazione di argomenti in modo da fornire una definizione dei segmenti di 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 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 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 hanno sottoscritto un abbonamento ad argomenti Tecnologia o Auto e motori.
  • () : parentesi per il raggruppamento. Ad esempio, 'Technology' in topics && ('Automotive' in topics || 'Energy' in topics). Ha come target solo le istanze di app che hanno sottoscritto un abbonamento ad argomenti Tecnologia e Auto e motori o Energia.

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

Implementa l'integrazione lato server per l'invio di un messaggio con la 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 sarà che invece di impostare il campo Topic dell'oggetto, sarai tu a impostare 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 ricezione

  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 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
    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 iscriverti/annullare l'iscrizione delle istanze dell'app agli argomenti senza dover creare istanze di chiamate lato client.

c0dc20655d392690.gif

10. Gestione delle sottoscrizioni agli argomenti dal lato server

Fino ad ora, in questo codelab tutte le chiamate agli abbonamenti agli argomenti e agli annullamenti delle iscrizioni vengono avviate da un'istanza dell'app.

Tuttavia, in alcuni casi d'uso, potrebbe essere opportuno gestire le sottoscrizioni agli argomenti dal 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, fornisci innanzitutto i dati per i due campi seguenti:
    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.

Creare una sottoscrizione e inviare un messaggio dell'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 all'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 abilitare 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. Istanze dell'app in primo piano
    40ab6cf71e0e4116.png
    1. Istanza dell'app in background
    8fba81037198209e.png

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

  1. Per annullare le iscrizioni all'argomento 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 della sottoscrizione lato server e la convalida del suo effetto tramite l'invio di un messaggio di un argomento rimane un esercizio manuale.

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, ti consigliamo di provare gli argomenti per altre piattaforme utilizzando le seguenti guide:

Documenti di riferimento