Esercitazione: Inviare notifiche push ai dispositivi Android usando Firebase SDK versione 1.0.0-preview1

Questa esercitazione illustra come usare Hub di notifica di Azure e la versione aggiornata di Firebase Cloud Messaging (FCM) SDK (1.0.0-preview1) per inviare notifiche push a un'applicazione Android. In questa esercitazione verrà creata un'app Android vuota che riceve notifiche push tramite Firebase Cloud Messaging (FCM).

Nota

Per informazioni sui passaggi di deprecazione e migrazione di Firebase Cloud Messaging, vedere Migrazione di Google Firebase Cloud Messaging.

Il codice completo per questa esercitazione può essere scaricato da GitHub.

Questa esercitazione illustra i passaggi seguenti:

  • Creare un progetto di Android Studio.
  • Creare un progetto Firebase che supporta Firebase Cloud Messaging.
  • Creare un hub di notifica.
  • Connettere l'app all'hub.
  • Test dell'app.

Prerequisiti

Per completare l'esercitazione, è necessario disporre di un account Azure attivo. Se non si dispone di un account, è possibile creare un account di valutazione gratuita in pochi minuti. Per informazioni dettagliate, vedere Versione di valutazione gratuita di Azure.

Nota

Le API Google/Firebase non sono supportate nelle aree di Azure Cina.

Sono necessari anche gli elementi seguenti:

  • È consigliabile usare la versione più recente di Android Studio.
  • Il supporto minimo è il livello API 19.

Creare un progetto di Android Studio

Il primo passaggio consiste nel creare un progetto in Android Studio:

  1. Avviare Android Studio.

  2. Selezionare File, quindi New (Nuovo) e infine New Project (Nuovo progetto).

  3. Nella pagina Choose your project (Scegliere il progetto) selezionare Empty Activity (Attività vuota) e quindi Next (Avanti).

  4. Nella pagina Configure your project (Configurare il progetto) eseguire queste operazioni:

    1. Immettere un nome per l'applicazione.
    2. Specificare un percorso in cui salvare i file del progetto.
    3. Selezionare Fine.

    Configurare il progetto

Creare un progetto Firebase che supporta FCM

  1. Accedere alla console di Firebase. Creare un nuovo progetto Firebase se non è già disponibile.

  2. Dopo aver creato il progetto, selezionare Add Firebase to your Android app (Aggiungi Firebase all'app Android).

    Aggiungere Firebase

  3. Nella pagina Add Firebase to your Android app (Aggiungi Firebase all'app Android) eseguire queste operazioni:

    1. Per Android package name (Nome pacchetto Android), copiare il valore di applicationId nel file build.gradle dell'applicazione. In questo esempio è com.fabrikam.fcmtutorial1app.

      Specificare il nome del pacchetto

    2. Selezionare Registra l'app.

  4. Selezionare Download google-services.json (Scarica google-services.json), salvare il file nella cartella app del progetto e quindi selezionare Avanti.

    Scaricare il servizio Google

  5. Nella console di Firebase selezionare il file COG per il progetto. Selezionare quindi Project Settings (Impostazioni progetto).

    Impostazioni del progetto

  6. Se il file google-services.json non è stato scaricato nella cartella app del progetto di Android Studio, è possibile eseguire questa operazione in questa pagina.

  7. Passare alla scheda Cloud Messaging.

  8. Copiare e salvare il valore di Chiave server per un uso successivo. Questo valore viene usato per configurare l'hub.

  9. Se non viene visualizzata una chiave server nella scheda Firebase Cloud Messaging, seguire questa procedura:

    1. Selezionare il menu a tre punti dell'intestazione Cloud Messaging API (Legacy) Disabilitata .
    2. Seguire il collegamento a Gestisci API in Google Cloud Console.
    3. In Google Cloud Console selezionare il pulsante per abilitare l'API Google Cloud Messaging.
    4. Attendere qualche minuto.
    5. Tornare alla scheda Cloud Messaging del progetto console Firebase e aggiornare la pagina.
    6. Vedere che l'intestazione dell'API Messaggistica cloud è stata modificata in Api di messaggistica cloud (legacy) abilitata e ora mostra una chiave del server.

    Screenshot del portale che mostra l'abilitazione dell'API di messaggistica cloud (legacy).

Configurare un hub di notifica

  1. Accedere al portale di Azure.

  2. Scegliere Tutti i servizi dal menu a sinistra e quindi selezionare Hub di notifica nella sezione Dispositivi mobili. Selezionare l'icona a forma di stella accanto al nome del servizio per aggiungere il servizio alla sezione PREFERITI nel menu a sinistra. Dopo aver aggiunto Hub di notifica a PREFERITI, selezionarlo nel menu a sinistra.

  3. Nella pagina Hub di notifica selezionare Aggiungi sulla barra degli strumenti.

    Aggiungere l'hub

  4. Nella pagina Hub di notifica eseguire queste operazioni:

    1. Immettere un nome in Hub di notifica.

    2. Immettere un nome in Crea un nuovo spazio dei nomi. Uno spazio dei nomi contiene uno o più hub.

    3. Selezionare un valore nell'elenco a discesa Località. Questo valore specifica la posizione in cui creare l'hub.

    4. In Gruppo di risorse selezionare un gruppo di risorse esistente o crearne uno nuovo.

    5. Seleziona Crea.

      Creare l'hub

  5. Selezionare Notifiche (icona a forma di campanello) e quindi selezionare Vai alla risorsa. È anche possibile aggiornare l'elenco nella pagina Hub di notifica e selezionare l'hub.

    Selezionare l'hub

  6. Selezionare Criteri di accesso dall'elenco. Prendere nota delle due stringhe di connessione disponibili. Sono necessarie in un secondo momento per gestire le notifiche push.

    Criteri di accesso

    Importante

    Non usare il criterio DefaultFullSharedAccessSignature nell'applicazione. Questo criterio deve essere usato solo nel back-end dell'app.

Configurare le impostazioni di Firebase Cloud Messaging per l'hub

  1. Nel riquadro a sinistra in Settings (Impostazioni) selezionare Google (GCM/FCM).

  2. Immettere la chiave del server per il progetto FCM salvato in precedenza.

  3. Sulla barra degli strumenti selezionareSave (Salva).

    Chiave server

  4. Il portale di Azure visualizza un messaggio per indicare che l'hub è stato aggiornato correttamente. Il pulsante Save (Salva) è disabilitato.

L'hub di notifica è ora configurato per l'uso di Firebase Cloud Messaging. Sono anche disponibili le stringhe di connessione necessarie per inviare notifiche a un dispositivo e registrare un'app per la ricezione di notifiche.

Connettere l'app all'hub di notifica

Aggiungere Google Play Services al progetto

  1. In Android Studio selezionare Strumenti nel menu e quindi SDK Manager.

  2. Selezionare la versione di destinazione di Android SDK che viene usata nel progetto. Quindi selezionare Mostra i dettagli del pacchetto.

    SDK manager

  3. Selezionare API Google, se non è già installato.

    API

  4. Passare alla scheda SDK Tools (Strumenti SDK). Se Google Play Services non è già stato installato, selezionare Google Play Services come illustrato nell'immagine seguente. Selezionare Applica per installarlo. Prendere nota del percorso dell'SDK per l'uso in un passaggio successivo.

    Play services

  5. Se viene visualizzata la finestra di dialogo Confirm Change (Conferma modifica), selezionare OK. Il programma di installazione componenti installa i componenti richiesti. Al termine dell'installazione dei componenti, selezionare Finish (Fine).

  6. Selezionare OK per chiudere la finestra di dialogo Settings for New Projects (Impostazioni per nuovi progetti).

Aggiungere le librerie di Hub di notifica di Azure

  1. Nel file build.gradle per l'app aggiungere le righe seguenti nella sezione dependencies:

    implementation 'com.microsoft.azure:notification-hubs-android-sdk-fcm:1.1.4'
    implementation 'androidx.appcompat:appcompat:1.4.1'
    implementation 'com.android.volley:volley:1.2.1'
    
  2. Aggiungere il repository seguente dopo la sezione dependencies:

    repositories {
       maven {
          url "https://dl.bintray.com/microsoftazuremobile/SDK"
       }
    }
    

Aggiungere il supporto di Google Firebase

  1. Aggiungere il plug-in seguente alla fine del file se non è già presente.

    apply plugin: 'com.google.gms.google-services'
    
  2. Selezionare Sync Now (Sincronizza ora) sulla barra degli strumenti.

Aggiungi codice

  1. Creare un oggetto NotificationHubListener, che gestisce l'intercettazione dei messaggi provenienti da Hub di notifica di Azure.

    public class CustomNotificationListener implements NotificationListener {
    
       @override
       public void onNotificationReceived(Context context, RemoteMessage message) {
    
          /* The following notification properties are available. */
          Notification notification = message.getNotification();
          String title = notification.getTitle();
          String body = notification.getBody();
          Map<String, String> data = message.getData();
    
          if (message != null) {
             Log.d(TAG, "Message Notification Title: " + title);
             Log.d(TAG, "Message Notification Body: " + message);
          }
    
          if (data != null) {
              for (Map.Entry<String, String> entry : data.entrySet()) {
                  Log.d(TAG, "key, " + entry.getKey() + " value " + entry.getValue());
              }
          }
       }
    }
    
  2. Nel metodo OnCreate della classe MainActivity aggiungere il codice seguente per avviare il processo di registrazione di Hub di notifica quando viene creata l'attività:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);
       NotificationHub.setListener(new CustomNotificationListener());
       NotificationHub.start(this.getApplication(), "Hub Name", "Connection-String");
    
    }
    
  3. Sulla barra dei menu di Android Studio selezionare Build (Compila), quindi selezionare Rebuild Project (Ricompila progetto) per assicurarsi che il codice non contenga errori. Se si riceve un errore relativo all'icona ic_launcher, rimuovere l'istruzione seguente dal file AndroidManifest.xml:

    android:icon="@mipmap/ic_launcher"
    
  4. Assicurarsi di avere un dispositivo virtuale per l'esecuzione dell'app. Se non è presente, aggiungerne uno nel modo seguente:

    1. Gestione dispositivi

    2. Dispositivi virtuali

    3. Eseguire l'app nel dispositivo selezionato e verificare che venga registrata correttamente nell'hub.

      Registrazione dispositivo

      Nota

      La registrazione può non riuscire durante l'avvio iniziale, fino a quando non viene chiamato il metodo onTokenRefresh() del servizio Instance ID. Un aggiornamento dovrebbe avviare una registrazione corretta con l'hub di notifica.

Invio di una notifica di prova

È possibile inviare notifiche push all'hub di notifica dal portale di Azure, come indicato di seguito:

  1. Nella pagina Hub di notifica per l'hub nel portale di Azure selezionare Invio di prova nella sezione Risoluzione dei problemi.

  2. Per Piattaforme selezionare Android.

  3. Selezionare Invia. Non verrà visualizzata alcuna notifica nel dispositivo Android, perché nel dispositivo non è stata ancora eseguita l'app per dispositivi mobili. Dopo aver eseguito l'app per dispositivi mobili, selezionare di nuovo il pulsante Invia per visualizzare il messaggio di notifica.

  4. Osservare i risultati dell'operazione nell'elenco in fondo alla pagine del portale.

    Inviare una notifica di prova

  5. Il messaggio di notifica viene visualizzato nel dispositivo.

Le notifiche push vengono in genere inviate in un servizio back-end come App per dispositivi mobili o ASP.NET usando una libreria compatibile. Se non è disponibile una libreria per il back-end è anche possibile usare direttamente l'API REST per inviare messaggi di notifica.

Eseguire l'app per dispositivi mobili nell'emulatore

Prima di testare le notifiche push all'interno dell'emulatore, assicurarsi che l'immagine dell'emulatore supporti il livello Google API scelto per l'app. Se l'immagine non supporta le API Google native, è possibile che venga generata l'eccezione SERVICE_NOT_AVAILABLE.

Assicurarsi anche di avere aggiunto l'account Google all'emulatore in esecuzione in Impostazioni>Account. In caso contrario, i tentativi di registrazione con FCM possono generare un'eccezione AUTHENTICATION_FAILED.

Passaggi successivi

In questa esercitazione è stato usato Firebase Cloud Messaging per trasmettere notifiche a tutti i dispositivi Android registrati nel servizio. Per informazioni sulle procedure per eseguire il push di notifiche a dispositivi specifici, passare all'esercitazione seguente:

Di seguito è riportato un elenco di altre esercitazioni sull'invio di notifiche: