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 :
- Votre ID de projet Firebase
- 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.


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.


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" :

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
REM A command with parameters
vonage jwt create ^
--app-id='00000000-0000-0000-0000-000000000000' ^
--private-key=./private.key
REM 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" :

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

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.

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()
}
}
buildscript {
repositories {
// Check that you have the following line (if not, add it):
google() // Google's Maven repository
}
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() // Google's Maven repository
}
}
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')
}
apply plugin: 'com.android.application'
// Add this line
apply plugin: '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")
}
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 :
- Vous pouvez intégrer Service de connexion dans dans votre application, ce qui permettra aux appels de s'intégrer à l'interface utilisateur du système.
- Voir le Exemple de projet ConnectionService sur GitHub.