Visão geral
Em situações como uma chamada recebida, o usuário geralmente espera receber uma notificação push caso o aplicativo não esteja ativo. Você também pode integrar notificações push com Serviço de Conexão para exibir chamadas recebidas na interface do usuário do sistema. Este guia explica como configurar seu aplicativo Android para receber notificações push do Client SDK.
Conectar o Vonage ao Firebase
Para receber notificações push, é necessário conectar o Vonage ao Firebase. Para isso, você precisará do seguinte:
- Seu ID do projeto do Firebase
- Sua chave da conta de serviço do Firebase
Obter um ID de aplicativo da Vonage
Obtenha seu ID de aplicativo da API da Vonage. Você pode acessar as aplicações existentes na painel de controle. Se você ainda não tem um aplicativo, pode criar um novo aplicativo por meio de CLI da Vonage.
Obter um ID de projeto do Firebase
Obtenha o ID do seu projeto do Firebase no Console do Firebase. Acesse Firebase console -> Project settings -> General.


Obter uma chave de account de serviço do Firebase
Obtenha sua chave de servidor do Firebase no Console do Firebase. Acesse Firebase console -> Project settings -> Service accounts e gerar uma nova chave privada.


Conecte seu aplicativo Vonage ao Firebase
Você envia suas credenciais para a Vonage usando o Painel da API. Abra seu aplicativo no painel de controle, em seguida, abra a aba “Ativar notificações push”:

Insira o ID do seu projeto do Firebase e envie a chave da sua conta de serviço da etapa anterior.
Como usar o Terminal
Você também pode conectar o serviço de notificações push do backend da Vonage ao aplicativo do Firebase usando o terminal. Você precisará do seu ID de aplicativo da Vonage e deverá gerar um JWT de administrador da 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 Um JWT de administrador é um JWT sem a reivindicação “sub”. Mais detalhes sobre como gerar um JWT podem ser encontrados no guia de autenticação.
Preencher VONAGE_APP_ID, VONAGE_JWT, FIREBASE_PROJECT_ID, e FIREBASE_SERVICE_ACCOUNT com os valores obtidos anteriormente
e execute o comando abaixo para enviar a solicitação. Seu FIREBASE_SERVICE_ACCOUNT deve ser a chave privada do
Firebase, na forma de uma string com caracteres especiais 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
Se você estiver atualizando um token existente, exclua-o primeiro, executando um DELETE solicitação para o mesmo
endpoint com a mesma autenticação.
NOTA Não há validação neste endpoint. O 200 O código de retorno indica que a Vonage recebeu os dados e os armazenou,
mas ainda não verificou se os valores são válidos.
Configure o projeto do Firebase para seu aplicativo Android
Para habilitar as notificações push no seu aplicativo para Android, é necessário configurá-lo.
Configure seu projeto Android
Vamos começar configurando seu projeto Android com as dependências necessárias.
Adicionar a dependência do Client SDK
Adicionar o Client SDK ao seu projeto.
Adicione a configuração do Firebase ao seu aplicativo
Antes de definirmos a configuração específica para notificações push, há algumas etapas gerais que você precisa seguir para configurar o Firebase em seu aplicativo.
NOTA que você pode pular esta etapa se seu aplicativo já estiver usando outros produtos do Firebase.
No seu projeto do Firebase, clique na opção “adicionar aplicativo Android”:

Preencha o formulário exibido para registrar sua solicitação no projeto do Firebase

Em seguida, aparecerá um botão “Baixar google-services.json”; clique nele e baixe o arquivo.
Agora, alterne para a visualização “Projeto” no Android Studio para ver o diretório raiz do seu projeto.
Mova o arquivo google-services.json que você baixou para o diretório raiz do módulo do seu aplicativo Android.

Por fim, você precisa adicionar o plug-in dos serviços do Google, que carregará o arquivo google-services.json. Modifique seu
arquivo no nível do projeto build.gradle arquivo para incluir o seguinte:
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
}
}
E no nível do seu aplicativo build.gradle implementar a BoM básica do Firebase
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')
}
Adicionar a dependência do Firebase Cloud Messaging
No seu IDE, no nível do aplicativo build.gradle arquivo (geralmente app/build.gradle), adicione o firebase-messaging dependência:
dependencies{
implementation("com.google.firebase:firebase-messaging:21.0.1")
}
dependencies{
implementation 'com.google.firebase:firebase-messaging:21.0.1'
}
NOTA: O número da versão mais recente pode ser encontrado no Site do Firebase.
Registrar token de notificação
Para receber a notificação push, é necessário registrar o token de push do usuário no backend da 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() retornará um ID exclusivo do dispositivo do usuário. Os usuários podem registrar vários dispositivos.
O ID do dispositivo pode ser usado posteriormente para cancelar o registro do dispositivo do usuário, impedindo que ele receba futuras notificações push.
client.unregisterDevicePushToken("Device_ID") { error ->
if (error == null) {
// device id deleted
}
}
Implementar um serviço de recepção do Firebase
Para receber mensagens do Firebase, é necessário implementar o serviço de mensagens do Firebase. Você também precisará verificar se a
mensagem recebida é uma mensagem da Vonage e, em caso afirmativo, de que tipo, utilizando o getPushNotificationType() método auxiliar. Se for
um INCOMING_CALL processamos adequadamente, utilizando nossos 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 -> {}
}
}
//...
}
Atender uma chamada recebida
Se processPushCallInvite Se for bem-sucedido, você receberá um convite de chamada no seu aplicativo proveniente do SDK. Para atender
o convite recebido por meio da notificação push do Firebase:
val call: CallId?
invite?.let {
client.answer(it) {
err ->
when {
err != null -> {
print("error answering call")
}
else -> {
call = it
print("call answered: $voiceCall")
}
}
}
}
Rejeitar uma chamada recebida
Para rejeitar o convite recebido por meio da notificação push do Firebase:
invite?.let {
client.reject(it) { err ->
when {
err != null -> {
print("error rejecting call")
}
else -> {
print("call rejected")
}
}
}
}
Conclusão
Neste guia, você viu como configurar notificações push.
Voz:
- Você pode integrar Serviço de Conexão em seu aplicativo, o que permitirá que as chamadas se integrem à interface do usuário do sistema.
- Veja o Projeto de exemplo do ConnectionService no GitHub.