Configurar notificações push no iOS
Quando ocorrem eventos, como uma nova mensagem ou uma chamada recebida, o usuário geralmente espera receber uma notificação push, caso o aplicativo não esteja ativo.
No caso do Voice, você pode integrar notificações push via VoIP ao seu aplicativo usando PushKit e CallKit. Nosso blog apresenta um tutorial completo sobre como integrar notificações push via VoIP que apresentam um projeto de exemplo concluído.
No Chat, você pode integrar Notificações ao usuário no seu aplicativo. Você pode personalizar a notificação push que recebe da Vonage antes de exibi-la ao usuário com um extensão de aplicativo para serviço de notificações.
Criar um certificado de envio
O serviço de Notificações Push da Apple (APNs) utiliza autenticação baseada em certificado para proteger as conexões entre o APNs, os servidores da Vonage e os dispositivos finais. Você precisará criar um certificado e enviá-lo para os servidores da Vonage.
Incorporando a funcionalidade de notificações push
Para usar notificações push, é necessário adicionar o recurso de notificações push ao seu projeto do Xcode. Para isso, selecione seu destino e escolha Assinatura e recursos:

Em seguida, selecione “Adicionar recurso” e adicione o Notificações push e Modos de fundo recursos:

Na funcionalidade “Modos de fundo”, selecione Voz sobre IP e Processamento em segundo plano. Se o Xcode estiver gerenciando automaticamente a assinatura do seu aplicativo, ele atualizará o perfil de provisionamento vinculado ao seu Identificador de Pacote para incluir os recursos.
Em seguida, selecione “Adicionar recurso” e adicione o Notificações push capacidade:

Geração de um certificado de notificação
Para gerar um certificado push, você precisará fazer login na sua conta de desenvolvedor da Apple e acessar a Certificados, Identificadores e Perfis página e adicione um novo certificado:

Escolha um Serviço de Notificações Push da Apple via SSL (Sandbox e Produção) e continuar.

Se a opção do serviço de Notificações Push da Apple não estiver disponível para você, será necessário pedir a um administrador do seu account de desenvolvedor da Apple que conclua essa etapa por você.
Agora você precisará escolher o App ID do aplicativo ao qual deseja adicionar notificações push e continuar. Se o seu aplicativo não estiver na lista, você terá que criar um App ID. O Xcode pode fazer isso automaticamente se estiver gerenciando sua assinatura para você; caso contrário, você pode criar um novo App ID no Certificados, Identificadores e Perfis página em * Identificadores*. Certifique-se de selecionar o recurso de notificações push ao fazer isso.
Será solicitado que você envie uma Solicitação de Assinatura de Certificado (CSR). Você pode seguir as instruções em
Site de ajuda da Apple
para criar um CSR no seu Mac. Assim que o CSR for enviado, você poderá baixar o certificado. Clique duas vezes no
.cer arquivo para instalá-lo no Acesso ao Chaveiro.
Para obter o certificado de notificações push no formato exigido pelos servidores da Vonage, você precisará exportá-lo. Localize seu
certificado do Serviço de Notificações Push da Apple no Acesso ao Chaveiro e clique com o botão direito do mouse para exportá-lo. Dê um nome à exportação
applecert e selecione .p12 no formato:

Você pode encontrar mais detalhes sobre como se conectar ao APNs em Documentação oficial da Apple.
Envie seu certificado
Você faz o upload do seu certificado para a Vonage usando o Painel da API. Abra seu aplicativo no painel de controle, em seguida, abra a aba “Ativar notificações push”:

Envie seu certificado, em .p12 formato, da etapa anterior, e adicione uma senha, se necessário.
Como usar o Terminal
Você também pode enviar seu certificado pelo terminal. Você precisará do seu ID de aplicativo da Vonage para fazer o envio pelo terminal; além disso, precisará gerar um JWT de administrador da Vonage.
Para gerar um JWT de administrador da Vonage, execute o seguinte comando da CLI da Vonage. Lembre-se de substituir o APPLICATION_ID com o ID
do seu aplicativo da Vonage e PRIVATE_KEY com o nome do seu arquivo de chave privada:
# 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.
Em seguida, execute o seguinte comando do Curl, substituindo jwt, applecert.p12, app_id com seus valores:
Se você utilizou uma senha ao exportar seu certificado, inclua a senha no corpo da sua solicitação da seguinte forma:
-d "{\"password\":\"$PASSWORD\"}" \
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.
Notificações sobre o vencimento de certificados APNs
A Vonage oferece um serviço de notificação que avisa quando um certificado APNs associado à sua conta está prestes a expirar ou já expirou, ajudando a evitar falhas nas notificações push. Para ativar o serviço:
- Faça login no Painel do Vonage.
- Selecionar Configurações da API no menu de navegação à esquerda.
- Clique no Notificações aba.
- Clique no + Inscreva-se para receber notificações botão na seção “Configuração da assinatura” para visualizar o seguinte formulário:

- Selecione a categoria de notificação: Serviço Push.
- Selecione o tipo de notificação: Aviso de expiração do certificado APNs.
- Digite um nome — ele serve apenas como referência, para ajudar você a lembrar para que serve essa assinatura.
- Ative a opção “Receber notificações para subcontas” se desejar que os certificados das subcontas também gerem notificações.
- Insira um ou mais endereços de e-mail (separados por vírgulas) — todos os endereços listados receberão a notificação simultaneamente.
- Clique Salvar.
Sua assinatura será criada e você a verá listada no menu suspenso “Serviço Push”, na seção “Configuração da assinatura”.
Integre notificações push ao seu aplicativo
Depois de enviar seu certificado para a Vonage, integre o recurso de notificação push via VoIP ao seu aplicativo seguindo estas etapas:
1. Vincule o CallKit Estrutura
Ao usar notificações push via VoIP, é necessário utilizar o framework CallKit. Vincule-o ao seu projeto adicionando-o em Frameworks, bibliotecas e conteúdo incorporado na seção “Geral”:

2. Configuração PushKit
No seu AppDelegate, adicione um voipRegistry propriedade:
let voipRegistry = PKPushRegistry(queue: nil)
e configure-o:
func registerForVoIPPushes() {
self.voipRegistry.delegate = self
self.voipRegistry.desiredPushTypes = [PKPushType.voIP]
}
Chame a função acima no didFinishLaunchingWithOptions AppDelegate função.
3. Inscreva-se para receber notificações push via VoIP
Implementar o PKPushRegistryDelegate didUpdate função delegada, que fornecerá a você um PKPushCredentials objeto. Esse objeto contém o token necessário para registrar este dispositivo.
NOTA: Antes de registrar o token, certifique-se de ter criado uma sessão com sucesso.
Ligar registerDevicePushToken no VGVoiceClient após criar uma sessão e passar o token de credenciais do push:
var isSandbox = false
#if DEBUG
isSandbox = true
#endif
client.registerVoipToken(token, isSandbox: isSandbox) { error, deviceId in
if error == nil {
// Push token registered
} else {
// Push token registration error
}
}
Isso vinculará o token a este dispositivo e ao usuário que criou a sessão. Por exemplo, se você criou uma sessão com o usuário Alice, sempre que houver uma chamada recebida para Alice A Vonage irá consultar o token do dispositivo para Alice. 'isSandbox' permite que você defina se deseja ou não utilizar o servidor de notificações push da sandbox da Apple. Você pode usar o deviceId para cancelar o registro do dispositivo para notificações push.
4. Tratar uma notificação push de VoIP recebida
Quando o dispositivo recebe uma notificação push de VoIP, o PKPushRegistryDelegate função delegada didReceiveIncomingPushWith será chamada. Aqui, você precisará verificar se essa notificação é da Vonage e processá-la:
func isVonagePush(with userInfo: [AnyHashable : Any]) -> Bool {
VGVoiceClient.vonagePushType(userInfo) == .unknown ? false : true
}
func pushRegistry(_ registry: PKPushRegistry, didReceiveIncomingPushWith payload: PKPushPayload, for type: PKPushType, completion: @escaping () -> Void) {
if isVonagePush(with: payload.dictionaryPayload) {
if let invite = client.processCallInvitePushData(payload) {
// Report new call to CallKit
} else {
// Report failed call to CallKit
}
}
}
Para processar a notificação recebida, você precisará de uma sessão ativa pertencente ao destinatário da chamada. Recomenda-se criar uma nova sessão e, simultaneamente, chamar processCallInvitePushData desde que o usuário não esteja em uma chamada no momento.
Quando processCallInvitePushData assim que for concluído com sucesso, você receberá um convite para uma chamada no didReceiveInviteForCall função delegada. Aqui você pode relatar a ligação para o CallKit.
func voiceClient(_ client: VGVoiceClient, didReceiveInviteForCall callId: String, from caller: String, withChannelType type: String) {
let activeCall = UUID(uuidString: callID)
let update = CXCallUpdate()
update.localizedCallerName = caller
// provider is an instance of CXProvider
provider.reportNewIncomingCall(with: activeCall!, update: update) { error in
if error == nil {
completion()
}
}
}
NOTA: Antes de ligar answer ou reject Para o convite para a chamada, certifique-se de que a sessão que você criou anteriormente tenha sido criada com sucesso.
Depois de enviar seu certificado para a Vonage, integre o recurso de notificações push ao seu aplicativo seguindo estas etapas:
- Solicitar permissões para notificações push
func registerForPushNotificationsIfNeeded() {
UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound, .badge]) { [weak self] granted, _ in
print("Permission granted: \(granted)")
if granted {
self?.getNotificationSettings()
}
}
}
func getNotificationSettings() {
UNUserNotificationCenter.current().getNotificationSettings { settings in
print("Notification settings: \(settings)")
guard settings.authorizationStatus == .authorized else { return }
Task { @MainActor in
UIApplication.shared.registerForRemoteNotifications()
}
}
}
Ligue para o registerForPushNotificationsIfNeeded função no didFinishLaunchingWithOptions AppDelegate função.
- Inscreva-se para receber notificações push
Adicione o didRegisterForRemoteNotificationsWithDeviceToken função para o seu AppDelegate classe. Ela será chamada pelo sistema para fornecer a você um token de dispositivo. Chame registerDeviceToken no VGChatClient após criar uma sessão e passar o token do dispositivo:
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
var isSandbox = false
#if DEBUG
isSandbox = true
#endif
client.registerDeviceToken(deviceToken, isSandbox: isSandbox) { error, deviceId in
...
}
}
Isso vinculará o token a este dispositivo e ao usuário que criou a sessão. Por exemplo, se você criou uma sessão com o usuário Alice, sempre que houver uma mensagem recebida para Alice A Vonage irá consultar o token do dispositivo para Alice. 'isSandbox' permite que você defina se deseja ou não utilizar o servidor de notificações push da sandbox da Apple. Você pode usar o deviceId para cancelar o registro do dispositivo para notificações push.
Conclusão
Neste guia, você viu como configurar notificações push.
Voz:
- Você pode saber mais sobre o CallKit em developer.apple.com.
- Para um tutorial completo, acesse nosso Blog sobre o gerenciamento de notificações push de VoIP.
- Veja o projeto de exemplo concluído no GitHub.
Bate-papo:
- Você pode saber mais sobre as notificações ao usuário em developer.apple.com.