Configurazione di Firebase Cloud Messaging e invio di notifiche push mobili in Connectif

Per l'invio e la ricezione di notifiche push mobili tramite il Mobile SDK di Android, è necessario configurare Firebase Cloud Messaging. In questo articolo vengono spiegati i passaggi necessari per effettuare la configurazione.

 

1. Creare e configurare il progetto in Firebase

1.1. Creare e configurare un progetto in Firebase

Il primo passo sarà configurare un progetto nella console di Firebase; se non ne hai uno, puoi seguire la guida di Google per la creazione e configurazione iniziale di Firebase su Android.

Una volta completato questo passaggio, avremo ottenuto il file google-services.json, avremo Google Play Service a livello di progetto e app, e la dipendenza di Firebase a livello di app (all’interno dei nostri file Build.gradle).

 

1.2. Configurazione di FirebaseMessagingService

All’interno del nostro progetto Android, sarà necessario implementare il servizio FirebaseMessagingService, che ci permetterà di ricevere le notifiche tramite onMessageReceived e registrare le modifiche del push token con onNewToken.

 

a. Ricezione delle notifiche in onMessageReceived

Nel metodo onMessageReceived riceveremo le notifiche generate dai nostri Workflow in Connectif; per gestire queste push useremo Connectif.handlePushNotification, che restituirà un booleano che indica se la push è stata gestita da Connectif, come mostrato nell’implementazione, lo utilizzeremmo per gestire tutte le push che non provengono da Connectif.

override fun onMessageReceived(remoteMessage: RemoteMessage) {
    if (!Connectif.handlePushNotification(
            remoteMessage.data,
            applicationContext
        )
    ) {
        // Other push providers
    }
}

Se desideriamo identificare se la push proviene da Connectif e non vogliamo gestirla in quel momento, possiamo utilizzare Connectif.isConnectifPushNotification.

 

b. Registrare le modifiche del token push

La prima volta che la nostra app viene avviata genera un nuovo token, che possiamo registrare attraverso il nostro servizio con onNewToken.

override fun onNewToken(token: String) {
    Connectif.addPushToken(token)
}

 

Nota importante sui permessi: Invocando il metodo Connectif.addPushToken(token), l’SDK di Connectif invierà automaticamente, insieme al nuovo token, lo stato attuale dei permessi per le notifiche push dell’utente sul dispositivo. Questo garantisce che Connectif abbia sempre informazioni aggiornate sulla capacità dell’utente di ricevere notifiche in tempo reale.

 

Il token potrebbe cambiare nei seguenti casi: 

  • L’app viene ripristinata su un dispositivo nuovo.
  • L’utente disinstalla e reinstalla l’app.
  • L’utente cancella i dati dell’app.

Questo sarà l’aspetto della nostra implementazione di FirebaseMessagingService.

class MyFirebaseMessagingService : FirebaseMessagingService() {
    private val notificationManager by lazy {
        getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
    }

    override fun onMessageReceived(remoteMessage: RemoteMessage) {
        if (!Connectif.handlePushNotification(
                remoteMessage.data,
                notificationManager,
                applicationContext
            )
        ) {
            // Other push providers
        }
    }

    override fun onNewToken(token: String) {
        Connectif.addPushToken(token)
    }
}

Dobbiamo tenere presente che se non è il primo avvio dell’app, onNewToken non verrà eseguito, quindi sarà utile ottenere il token push attuale dall’istanza di Firebase e inviarlo a Connectif. I momenti adatti sono durante onCreate nel nostro oggetto Application o nella nostra Activity principale.

class SampleApp : Application() {

    override fun onCreate() {
        super.onCreate()
            FirebaseMessaging.getInstance().token.addOnSuccessListener {
            Connectif.addPushToken(it, applicationContext)
        }
    }
}

 

c. Aggiungere FirebaseMessagingService al file AndroidManifest

Per poter usare il servizio di messaggistica, dobbiamo aggiungerlo al nostro file AndroidManifest.

<service
    android:name=".mypackages.MyFirebaseMessagingService"
    android:exported="false">
    <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT" />
    </intent-filter>
</service>

 

2. Configurare Android nell’Integrazione App Mobile di Connectif

Per poter inviare push da Connectif, è necessario fornirci la chiave privata (file JSON) dell’Account di Servizio per Google Cloud. I passaggi per la creazione sono i seguenti.

Dalla Console di Firebase accederemo al nostro progetto, nella sezione "Impostazioni progetto" accederemo agli "Account di Servizio".

console.firebase.google.com_u_3_project_sdk-test-app-51cdb_settings_serviceaccounts_adminsdk.png

 

Mantenendo selezionato Node.js, cliccheremo su "Genera nuova chiave privata". Questa azione genererà un file JSON che ci servirà più avanti.

In Connectif andremo alla configurazione del nostro negozio, nella sezione del canale App Mobile. Troveremo una sezione Android che ci permetterà di caricare il file precedentemente scaricato da Firebase.

 

localhost_3002_store_64886d8852c77f00f7b2379e_store-edit_tabId=mobileApp.png

 

Questo sarà l’aspetto della nostra integrazione una volta caricato correttamente il file.

 

localhost_3002_store_64886d8852c77f00f7b2379e_store-edit_tabId=mobileApp (1).png

 

Una volta completati questi passaggi, l’integrazione di Firebase Cloud Messaging sarà pronta per inviare push dai nostri workflow.

 

3. Configurazione aggiuntiva

Ricorda che all’avvio l’SDK può definire alcuni valori usando il parametro ConnectifConfig in Connectif.initialize().

 

3.1. Icona 

Di default è assegnata un’icona alle nostre notifiche push:

ic_default_notification default_push_icon.png 

Se vuoi, puoi personalizzarla indicando la risorsa nella proprietà pushSmallIcon di ConnectifConfig quando avvii l’SDK; ricorda che per essere visualizzata correttamente deve contenere solo colore bianco e trasparenze.

 

3.2. Canale di notifiche

Da Android 8 è obbligatorio creare un canale per poter mostrare le notifiche; di default assegniamo alle notifiche mostrate da Connectif il nome canale "Default Channel" e "connectif_channel" come identificatore del canale.

Puoi indicarci un nome e un canale personalizzati usando le proprietà pushChannelName e pushChannelId di ConnectifConfig quando avvii l’SDK.

 

3.3. Aggiornamento dello stato dei permessi di notifiche

Se hai bisogno di forzare l’aggiornamento dello stato dei permessi delle notifiche push dell’utente (ad esempio, se l’utente ha modificato i permessi dalle impostazioni di sistema di Android e vuoi riflettere immediatamente tale cambiamento in Connectif), puoi utilizzare il metodo updatePushPermissionStatus().

Questo metodo permette di inviare all’SDK lo stato attuale dei permessi di notifica del dispositivo in qualsiasi momento.

Connectif.updatePushPermissionStatus()
 

Congratulazioni!
Sei arrivato alla fine della lezione.

  

Hai ancora dubbi?
Ricorda che puoi contare sui nostri specialisti di Connectif. Per contattarli, ti basta aprire un ticket al Supporto cliccando sul pulsante blu “Aiuto” della tua dashboard.


Continua a imparare!

Per sfruttare tutto il potenziale del tuo account Connectif, ti consigliamo di continuare con i seguenti articoli: