Visión general
En eventos como una llamada entrante, el usuario suele esperar recibir una notificación push si la aplicación no está activa. También puede integrar las notificaciones push con Servicio de conexión para mostrar las llamadas entrantes con la interfaz de usuario del sistema. Esta guía explica cómo configurar su aplicación Android para recibir notificaciones push del Client SDK.
Conecta Vonage a Firebase
Para recibir notificaciones push, debes conectar Vonage con Firebase. Para ello, necesitarás lo siguiente:
- Tu ID de proyecto de Firebase
- Clave de su cuenta de servicio Firebase
Obtén un ID de aplicación de Vonage
Obtén tu identificador de aplicación de la API de Vonage. Puedes acceder a las aplicaciones existentes en el cuadro de mando. Si aún no tiene una aplicación, puede crear una nueva a través de CLI de Vonage.
Obtener un ID de proyecto Firebase
Consigue el ID de tu proyecto de Firebase en la Consola de Firebase. Navegue hasta Firebase console -> Project settings -> General.


Obtener una clave de cuenta de servicio Firebase
Consigue tu clave de servidor de Firebase en el Consola de Firebase. Navegue hasta Firebase console -> Project settings -> Service accounts y generar una nueva clave privada.


Conecta tu aplicación de Vonage a Firebase
Debes subir tus credenciales a Vonage a través del panel de control de la API. Abre tu aplicación en el cuadro de mandoy, a continuación, abre la pestaña "Activar notificaciones push":

Introduce el ID de tu proyecto de Firebase y sube la clave de tu cuenta de servicio del paso anterior.
Uso del terminal
También puedes conectar el servicio push backend de Vonage con la aplicación Firebase usando la terminal. Necesitarás tu ID de aplicación de Vonage y deberás generar un JWT de administrador de 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
NOTA Un JWT admin es un JWT sin una sub-reclamación. Encontrará más información sobre cómo generar un JWT en la sección guía de autenticación.
Rellene VONAGE_APP_ID, VONAGE_JWT, FIREBASE_PROJECT_IDy FIREBASE_SERVICE_ACCOUNT con los valores
y ejecute el siguiente comando para enviar la solicitud. Su FIREBASE_SERVICE_ACCOUNT debe ser la clave privada de
Firebase, como una cadena con caracteres especiales escapados:
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 vas a actualizar un token ya existente, elimina primero el token actual creando un DELETE solicitud al mismo
punto final con la misma autenticación.
NOTA No hay validación en este punto final. La dirección 200 código de retorno significa que Vonage obtuvo los datos y los almacenó
pero no ha comprobado que los valores sean válidos.
Configura un proyecto de Firebase para tu aplicación de Android
Para habilitar las notificaciones push para su aplicación Android, debe configurar su aplicación Android.
Configura tu proyecto de Android
Empecemos por configurar tu proyecto Android con las dependencias necesarias.
Añadir la dependencia Client SDK
Añadir el Client SDK a su proyecto.
Añade la configuración de Firebase a tu aplicación
Antes de establecer la configuración específica de las notificaciones push, hay algunos pasos generales que debes seguir para configurar Firebase dentro de tu aplicación.
NOTA que puede omitir este paso si su aplicación ya utiliza otros productos Firebase.
Desde tu proyecto de Firebase, haz clic en la opción «Añadir aplicación de Android»:

Rellene el formulario que aparece para registrar su aplicación en el proyecto Firebase

Aparecerá el botón "Descargar google-services.json", haz clic en él y descarga el archivo.
Ahora cambia a la vista Proyecto en Android Studio para ver el directorio raíz de tu proyecto.
Mueve el archivo google-services.json que has descargado al directorio raíz del módulo de tu aplicación para Android.

Por último, debes añadir el complemento de servicios de Google, que cargará el archivo google-services.json. Modifica tu
archivo a nivel de proyecto build.gradle para incluir esto:
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
}
}
Y en su nivel de aplicación build.gradle implementar la base de 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')
}
Añadir la dependencia de Firebase Cloud Messaging
En tu IDE, a nivel de la aplicación build.gradle archivo (normalmente app/build.gradle), añade el firebase-messaging dependencia:
dependencies{
implementation("com.google.firebase:firebase-messaging:21.0.1")
}
dependencies{
implementation 'com.google.firebase:firebase-messaging:21.0.1'
}
NOTA: El número de la última versión puede consultarse en la página Página web de Firebase.
Registrar el token de Push
Para recibir la notificación push, debes registrar el token push del usuario en el backend de Vonage
utilizando 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() devolverá un identificador de dispositivo único para el dispositivo del usuario. Los usuarios pueden registrar varios dispositivos.
El identificador de dispositivo se puede utilizar para anular el registro del dispositivo del usuario y evitar que reciba notificaciones push en el futuro.
client.unregisterDevicePushToken("Device_ID") { error ->
if (error == null) {
// device id deleted
}
}
Implementar un servicio receptor de Firebase
Para recibir mensajes firebase necesita implementar el servicio de mensajería firebase. También tendrá que comprobar si el
recibido es un mensaje vonage y, en caso afirmativo, de qué tipo, utilizando el comando getPushNotificationType() método auxiliar. Si se trata de
un INCOMING_CALL lo procesamos adecuadamente, utilizando nuestros métodos auxiliares 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 -> {}
}
}
//...
}
Responder a una llamada entrante
Si processPushCallInvite Si se realiza correctamente, recibirás una invitación de llamada entrante en tu aplicación desde el SDK. Para responder
a la invitación recibida a través de la notificación 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")
}
}
}
}
Rechazar una llamada entrante
Para rechazar la invitación recibida de la notificación push de firebase:
invite?.let {
client.reject(it) { err ->
when {
err != null -> {
print("error rejecting call")
}
else -> {
print("call rejected")
}
}
}
}
Conclusión
En esta guía has visto cómo configurar las notificaciones push.
Voz:
- Puede integrar Servicio de conexión en tu aplicación, lo que permitirá que las llamadas se integren con la interfaz de usuario del sistema.
- Ver el Proyecto de ejemplo de ConnectionService en GitHub.