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:

  1. Su ID de proyecto Firebase
  2. 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.

Displaying the project settings location
Displaying the project ID location

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.

Displaying the project settings location
Displaying the server key location

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

Push Upload on the dashboard

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

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

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

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

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

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.

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

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()
    }
}

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')
}

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")
}

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: