Configuration de Firebase Cloud Messaging et envoi de notifications push mobiles dans Connectif

Pour l'envoi et la réception de notifications push mobiles via le SDK Mobile Android, vous devrez configurer Firebase Cloud Messaging. Cet article explique les étapes nécessaires pour effectuer cette configuration.

 

1. Créer et configurer le projet dans Firebase

1.1. Créer et configurer un projet dans Firebase

La première étape consiste à configurer un projet dans la console Firebase. Si vous n'en avez pas encore, vous pouvez suivre le guide de Google pour la création et la configuration initiale de Firebase sur Android.

Une fois cette étape terminée, vous aurez obtenu le fichier google-services.json et disposerez de Google Play Service au niveau du projet et de l'application, ainsi que de la dépendance Firebase au niveau de l'application (dans nos fichiers Build.gradle).

 

1.2. Configuration de FirebaseMessagingService

Dans notre projet Android, il sera nécessaire d'implémenter le service FirebaseMessagingService, qui nous permettra de recevoir les notifications via onMessageReceived et d'enregistrer les changements du token push avec onNewToken.

 

a. Réception des notifications dans onMessageReceived

Dans l'appel onMessageReceived, nous recevrons nos notifications générées depuis nos Workflows dans Connectif. Pour gérer ces push, nous utiliserons Connectif.handlePushNotification, qui nous renverra un booléen indiquant si ce push a été traité par Connectif. Comme montré dans l'implémentation, nous l'utiliserons pour gérer tous les push ne provenant pas de Connectif.

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

Si nous souhaitons identifier si le push vient de Connectif et ne pas le gérer à ce moment-là, nous pouvons utiliser Connectif.isConnectifPushNotification.

 

b. Enregistrer les changements du token push

La première fois que notre application démarre, un nouveau token est généré. Nous pouvons l'enregistrer via notre service avec onNewToken.

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

 

Note importante concernant les permissions : En appelant la méthode Connectif.addPushToken(token), le SDK Connectif enverra automatiquement, avec le nouveau token, l'état actuel des permissions de notifications push de l'utilisateur sur l'appareil. Cela garantit que Connectif dispose toujours d'informations à jour sur la capacité de l'utilisateur à recevoir des notifications en temps réel.

 

Ce token peut changer dans les cas suivants : 

  • L'application est réinitialisée sur un nouvel appareil.
  • L'utilisateur désinstalle puis réinstalle l'application.
  • L'utilisateur supprime les données de l'application.

Voici à quoi ressemblera notre implémentation de 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
            )
        ) {
            // Autres fournisseurs de push
        }
    }

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

Il faudra garder à l'esprit que si ce n'est pas le premier démarrage de l'application, onNewToken ne sera pas exécuté. Il sera donc utile d'obtenir le token push actuel de l'instance Firebase et de l'envoyer à Connectif. Les endroits appropriés pour cela sont durant onCreate dans notre objet Application ou dans celui de notre Activity principale.

class SampleApp : Application() {

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

 

c. Ajouter FirebaseMessagingService au fichier AndroidManifest

Pour pouvoir utiliser le service de messagerie, il faudra l'ajouter à notre fichier AndroidManifest.

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

 

2. Configurer Android dans l'intégration App Mobile de Connectif

Pour pouvoir envoyer des push depuis Connectif, nous aurons besoin que vous nous fournissiez la clé privée (fichier JSON) du Compte de Service Google Cloud. Voici les étapes pour la création.

Depuis la Console Firebase, accédez à votre projet, puis dans "Paramètres du projet", allez dans "Comptes de service".

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

 

En laissant la case Node.js cochée, cliquez sur "Générer une nouvelle clé privée". Cette action générera un fichier JSON dont vous aurez besoin plus tard.

Dans Connectif, rendez-vous dans la configuration de votre boutique, dans la section du canal App Mobile. Vous trouverez une section Android qui vous permettra de télécharger le fichier précédemment obtenu de Firebase.

 

localhost_3002_store_64886d8852c77f00f7b2379e_store-edit_tabId=mobileApp.png

 

Voici à quoi ressemblera votre intégration une fois le fichier correctement téléchargé.

 

localhost_3002_store_64886d8852c77f00f7b2379e_store-edit_tabId=mobileApp (1).png

 

Une fois ces étapes effectuées, l'intégration de Firebase Cloud Messaging sera prête pour envoyer des push depuis vos workflows.

 

3. Configuration supplémentaire

Rappelez-vous qu'au démarrage du SDK, vous pouvez définir certains paramètres en utilisant le paramètre ConnectifConfig dans Connectif.initialize().

 

3.1. Icône 

Par défaut, une icône est assignée à nos notifications push :

ic_default_notification default_push_icon.png 

Si vous le souhaitez, vous pouvez la personnaliser en indiquant la ressource dans la propriété pushSmallIcon de ConnectifConfig lors de l'initialisation du SDK. N'oubliez pas que pour s'afficher correctement, elle doit contenir uniquement du blanc et des zones transparentes.

 

3.2. Canal de notifications

Depuis Android 8, il est obligatoire de créer un canal pour afficher les notifications. Par défaut, les notifications affichées par Connectif auront pour nom de canal "Default Channel" et pour identifiant "connectif_channel".

Vous pouvez nous indiquer un nom et un canal personnalisés en utilisant les propriétés pushChannelName et pushChannelId de ConnectifConfig lors de l'initialisation du SDK.

 

3.3. Mise à jour de l'état des permissions de notifications

Si vous avez besoin de forcer la mise à jour de l'état des permissions de notifications push de l'utilisateur (par exemple, si l'utilisateur a modifié les permissions depuis les paramètres système Android et que vous souhaitez refléter ce changement immédiatement dans Connectif), vous pouvez utiliser la méthode updatePushPermissionStatus().

Cette méthode permet d'envoyer au SDK l'état actuel des permissions de notification de l'appareil à tout moment.

Connectif.updatePushPermissionStatus()
 

Félicitations !
Vous êtes arrivé à la fin de la leçon.

  

Des questions restent sans réponse ?
Rappelez-vous que nos spécialistes Connectif sont à votre disposition. Pour les contacter, il vous suffit d'ouvrir un ticket auprès du Support en cliquant sur le bouton bleu « Aide » de votre tableau de bord.


Continuez à apprendre !

Pour tirer pleinement parti de votre compte Connectif, nous vous recommandons de poursuivre avec les articles suivants :