Vue d'ensemble

Lors d'événements tels qu'un appel entrant, l'utilisateur s'attend souvent à recevoir une notification push si l'application n'est pas active. Vous pouvez également intégrer les notifications push avec Service de connexion pour afficher les appels entrants dans l'interface utilisateur du système. Ce guide explique comment configurer votre application Android pour recevoir des notifications push du Client SDK.

Connecter Vonage à Firebase

Pour recevoir des notifications push, vous devez connecter Vonage à Firebase. Pour ce faire, vous aurez besoin des éléments suivants :

  1. Votre ID de projet Firebase
  2. Votre clé de compte de service Firebase

Obtenir un numéro d'identification de l'application Vonage

Obtenez votre identifiant d'application API Vonage. Vous pouvez accéder aux applications existantes dans la section tableau de bord. Si vous n'avez pas encore d'application, vous pouvez en créer une nouvelle via CLI Vonage.

Obtenir un ID de projet Firebase

Obtenez l'identifiant de votre projet Firebase à partir de la page Console Firebase. Naviguez jusqu'à Firebase console -> Project settings -> General.

Displaying the project settings location
Displaying the project ID location

Obtenir une clé de compte de service Firebase

Obtenez votre clé de serveur Firebase à partir de la page Console Firebase. Naviguez jusqu'à Firebase console -> Project settings -> Service accounts et générer une nouvelle clé privée.

Displaying the project settings location
Displaying the server key location

Connectez votre application Vonage à Firebase

Vous téléchargez vos informations d'identification à Vonage à l'aide du tableau de bord de l'API. Ouvrez votre application sur le site Web de tableau de bordpuis ouvrez l'onglet "Activer les notifications push" :

Push Upload on the dashboard

Saisissez votre identifiant de projet Firebase et téléchargez votre clé de compte de service de l'étape précédente.

Utilisation du terminal

Vous pouvez également connecter le service de push du backend de Vonage avec l'application Firebase à l'aide du terminal. Vous aurez besoin de de votre ID d'application Vonage et devez générer un JWT d'administration Vonage.

# A command with parameters
vonage jwt create `
--app-id='00000000-0000-0000-0000-000000000000' `
--private-key=./private.key

# Will produce a token
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MzYyODE5NDYsImp0aSI6IjBmZjcwZDNmLTAzN2EtNGY4MC04ODZjLWI3MmM3MmQyMWNmMiIsImlhdCI6MTczNjI4MTA0NiwiYXBwbGljYXRpb25faWQiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAifQ.gA7jClpqaZ2OoS0iri-zGCbda4jO7C0M8mka0EnSyjlds1EeY8fNoBEx3FTXHfkkzzrj0TskrWc_dcs1wuM8Kx55c5rLQ7taVpDAYopKSc_CeeOaad8S6aWnRkTUTNeduO4aIn-0CbyRTluBYsH1RBqYBQvobuQIDEwbFw8xBgx0UfREMMN6DAWknR57eiVXN9x_oD6CGQJ1yV3025nGboeMsP9YgX4Nwc-rE2r8c1ZGwCLO81x8i19Qil3Nwu5q1nzouyavQjIw00B_TZkushnI1ufdi_GNqk-h5q2HvGkg7Pj9bVkZHFdVTO8im03JYNyJmcV83vnpjOLuCFRzxQ

NOTE Un JWT administrateur est un JWT sans sous-revendication. Pour plus de détails sur la manière de générer un JWT, voir le document guide d'authentification.

Remplir VONAGE_APP_ID, VONAGE_JWT, FIREBASE_PROJECT_IDet FIREBASE_SERVICE_ACCOUNT avec les valeurs et exécutez la commande ci-dessous pour envoyer la requête. Votre FIREBASE_SERVICE_ACCOUNT doit être la clé privée de Firebase, sous la forme d'une chaîne de caractères avec les caractères spéciaux échappés :

VONAGE_APP_ID=
VONAGE_JWT=
FIREBASE_PROJECT_ID=
FIREBASE_SERVICE_ACCOUNT=

curl -v -X PUT \
   -H "Authorization: Bearer $VONAGE_JWT" \
   -H "Content-Type: application/json" \
   -d "{\"token\":\"$FIREBASE_SERVICE_ACCOUNT\", \"projectId\":\"$FIREBASE_PROJECT_ID\"}" \
   https://api.nexmo.com/v1/applications/$VONAGE_APP_ID/push_tokens/android  

Si vous mettez à jour un jeton existant, supprimez d'abord le jeton existant en effectuant un DELETE au même point d'accès avec la même authentification. avec la même authentification.

NOTE Il n'y a pas de validation à ce stade. Les 200 signifie que Vonage a reçu les données et les a stockées, mais n'a pas vérifié que les valeurs sont valides. mais n'a pas vérifié la validité des valeurs.

Mise en place d'un projet Firebase pour votre application Android

Afin d'activer les notifications push pour votre application Android, vous devez configurer votre application Android.

Configurer votre projet Android

Commençons par configurer votre projet Android avec les dépendances nécessaires.

Ajouter la dépendance du Client SDK

Ajouter le Client SDK à votre projet.

Ajouter la configuration Firebase à votre Applications

Avant de mettre en place la configuration spécifique aux notifications push, il y a quelques étapes générales à suivre pour mettre en place Firebase dans votre application.

NOTE que vous pouvez sauter cette étape si votre application utilise déjà d'autres produits Firebase.

Depuis votre projet Firebase, cliquez sur l'option "add Android app" :

Add App getting started screen with options for ios, android, web, unity and flutter

Remplissez le formulaire affiché pour enregistrer votre application dans le projet Firebase.

Form to register your application with your Firebase project, package name is required.

Un bouton "Télécharger google-services.json" apparaît alors, cliquez dessus et téléchargez le fichier.

Passez maintenant à la vue Projet dans Android Studio pour voir le répertoire racine de votre projet.

Déplacez le fichier google-services.json que vous avez téléchargé dans le répertoire racine du module de votre application Android.

Android studio with project view selected and the google-service.json added in the app module directory

Enfin, vous devez ajouter le plugin Google services, qui chargera le fichier google-services.json. Modifiez votre fichier au niveau du projet build.gradle pour l'inclure :

buildscript {
    repositories {
	    // Check that you have the following line (if not, add it):
        google()
    }

    dependencies {
	    // Add this line
	    classpath("com.google.gms:google-services:4.3.10")
    }
}

allprojects {
    repositories {
		// Check that you have the following line (if not, add it):
        google()
    }
}

Et dans votre niveau d'application build.gradle implémenter la base Firebase BoM

plugins {
    id("com.android.application")
    id("com.google.gms.google-services")
}

dependencies {
  // Import the Firebase BoM
  implementation platform('com.google.firebase:firebase-bom:30.1.0')
}

Ajouter la dépendance Firebase Cloud Messaging

Dans votre IDE, au niveau de votre application build.gradle (généralement app/build.gradle), ajouter le firebase-messaging dépendance :

dependencies{
    implementation("com.google.firebase:firebase-messaging:21.0.1")
}

NOTE : Le numéro de la version la plus récente est indiqué sur le site web de la Commission européenne. Site web de Firebase.

Enregistrer le jeton de poussée

Pour recevoir le push, vous devez enregistrer le jeton de push de l'utilisateur dans le backend de Vonage en en utilisant registerDevicePushToken()

val token = "token"
client.createSession(token, null) { error, response ->
    when {
        error != null -> { println("there was an error: ${error}") }
        else -> {
            val pushToken: String? = context?.getSharedPreferences("_", com.google.firebase.messaging.FirebaseMessagingService.MODE_PRIVATE)?.getString("fb", "empty");
            if (pushToken != null){
                client.registerDevicePushToken(pushToken) { err, deviceId ->
                    if (err != null) {
                        println("there was an error: $err")
                    } else {
                        println("registered device push token successfully - device id: $deviceId")
                    }
                }
            }
        }
    }
}

registerDevicePushToken() renvoie un identifiant unique pour l'appareil de l'utilisateur. Les utilisateurs peuvent enregistrer plusieurs appareils. L'identifiant de l'appareil peut être utilisé pour désenregistrer ultérieurement l'appareil de l'utilisateur afin qu'il ne reçoive plus de notifications push.

client.unregisterDevicePushToken("Device_ID") { error -> 
    if (error == null) {
        // device id deleted
    }
}

Mise en place d'un service Firebase Receiver

Pour recevoir des messages firebase, vous devez implémenter le service de messagerie firebase. Vous devrez également vérifier si le reçu est un message vonage et si oui, de quel type, en utilisant l'option getPushNotificationType() méthode d'aide. S'il s'agit un INCOMING_CALL nous les traitons de manière appropriée, en utilisant nos méthodes d'assistance processPushInvite().

class FirebaseMessagingService: FirebaseMessagingService() {
    val invite: CallId?

    @RequiresApi(Build.VERSION_CODES.O)
    override fun onNewToken(token: String) {
        super.onNewToken(token)
        println("PUSH TOKEN:  $token")
        getSharedPreferences("_", MODE_PRIVATE).edit().putString("fb", token).apply();
    }

    override fun onMessageReceived(remoteMessage: RemoteMessage) {
        val dataString = remoteMessage.data.toString()
        val type: PushType = VoiceClient.getPushNotificationType(dataString)
        when (type) {
            INCOMING_CALL -> {
                this.invite = App.client.processPushCallInvite(dataString)
            }
            else -> {}
        }
   }
   //...
}

Répondre à un appel entrant

Si processPushCallInvite réussit, vous recevrez du SDK une invitation à recevoir un appel entrant dans votre application. Pour répondre à l'invitation reçue de la notification push de firebase :

val call: CallId?
invite?.let {
    client.answer(it) {
        err ->
        when {
            err != null -> {
                print("error answering call")
            }
            else -> {
                call = it
                print("call answered: $voiceCall")
            }
        }
    }
}

Rejeter un appel entrant

Pour rejeter l'invitation reçue de la notification push de firebase :

invite?.let {
    client.reject(it) { err ->
        when {
            err != null -> {
                print("error rejecting call")
            }
            else -> {
                print("call rejected")
            }
        }
    }
}

Conclusion

Dans ce guide, vous avez vu comment configurer les notifications push.

Voix :