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:
- Su ID de proyecto Firebase
- Clave de su cuenta de servicio Firebase
Obtén un ID de aplicación de Vonage
Obtén tu Id. de aplicación de API de Vonage. Puedes acceder a las aplicaciones existentes en la sección salpicadero. 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
Obtenga el identificador de su proyecto Firebase en Consola Firebase. Navegue hasta Firebase console -> Project settings -> General.


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


Conecta tu aplicación de Vonage a Firebase
Sube tus credenciales a Vonage usando el panel de API. Abre tu aplicación en la sección salpicaderoy, a continuación, abre la pestaña "Activar notificaciones push":

Introduzca su Firebase Project ID y cargue su Service Account Key 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 está actualizando un token existente, elimínelo primero haciendo un DELETE solicitud al mismo
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.
Configurar un proyecto Firebase para su aplicación Android
Para habilitar las notificaciones push para su aplicación Android, debe configurar su aplicación Android.
Configure su proyecto 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 Firebase haz clic en la opción "añadir aplicación 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, tienes que añadir el plugin de servicios de Google, que cargará el archivo google-services.json. Modifica tu
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 su IDE, en el nivel de su aplicación build.gradle (normalmente app/build.gradle), añada 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 Sitio web de Firebase.
Registro Push Token
Para recibir el push, debes registrar el token push del usuario en el backend de Vonage mediante
usando 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 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 de ayuda. Si es
un INCOMING_CALL procesamos adecuadamente, utilizando nuestros métodos de ayuda 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 tiene éxito, recibirá una invitación de llamada entrante a su aplicación desde el SDK. Para responder
la invitación recibida desde 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 su aplicación, lo que permitirá integrar las llamadas con la interfaz de usuario del sistema.
- Ver el Proyecto de ejemplo ConnectionService en GitHub.