Pular para o conteúdo principal

Visão geral

As notificações push VoIP são tratadas de forma diferente pela Apple em relação às notificações push padrão. Devido a essas restrições da plataforma, o OneSignal oferece suporte ao envio de notificações VoIP, mas não gerencia o registro de tokens VoIP para você. Você deve:
  • Registrar tokens VoIP você mesmo usando o Apple PushKit
  • Fazer upload de um certificado APNs específico para VoIP
  • Usar a API do OneSignal para registrar tokens e enviar notificações
O OneSignal não registra ou atualiza automaticamente os tokens VoIP (PushKit). Você deve registrar manualmente os tokens VoIP com o OneSignal usando a API.

Diferenças de plataforma em resumo

PlataformaPush VoIP suportado?Como funciona
iOS✅ SimUsa Apple PushKit e um certificado APNs VoIP
Android❌ NãoUsa pushs somente de dados para simular comportamento de chamada

Se você está criando um aplicativo de chamadas multiplataforma, usará abordagens diferentes por plataforma.

Android: simular comportamento estilo VoIP (não é VoIP verdadeiro)

O Android não oferece suporte a notificações push VoIP. Não há equivalente ao Apple PushKit. Em vez disso, os aplicativos de chamadas do Android simulam o comportamento VoIP usando:
  • Notificações push somente de dados
  • Serviços em primeiro plano
  • Interface de usuário personalizada estilo chamada
Você pode usar o suporte normal de push Android do OneSignal combinado com APIs nativas do Android para conseguir isso. Abordagem recomendada:
  • Enviar notificações somente de dados
  • Tratá-las em seu aplicativo para:
    • Iniciar um serviço em primeiro plano
    • Iniciar uma atividade de interface de chamada
    • Exibir uma notificação personalizada de chamada recebida
Se você deseja interceptar e controlar totalmente a renderização de notificações, use a Notification Service Extension do Android. Recursos úteis:
A configuração do Android não é específica do OneSignal. O OneSignal apenas entrega a carga do push; seu aplicativo lida com o comportamento da chamada.

iOS: enviar notificações push VoIP verdadeiras

No iOS, as notificações VoIP usam o Apple PushKit e têm regras especiais de entrega que diferem das notificações push padrão. Como o VoIP do iOS funciona com o OneSignal: Para notificações VoIP do iOS:
  1. Seu aplicativo registra um token VoIP usando PushKit
  2. Você faz upload de um certificado APNs de VoIP Services para o OneSignal
  3. Você registra o token VoIP com o OneSignal usando a API
  4. Você envia pushs VoIP usando apns_push_type_override: “voip”
Como a Apple trata os pushs VoIP de forma diferente, o OneSignal também deve tratá-los como uma configuração de aplicativo separada.

1. Registrar um token VoIP usando PushKit

Use o framework PushKit da Apple para se registrar para notificações VoIP e receber um token VoIP.
  • Implemente o PushKit em seu aplicativo
  • Armazene e atualize o token VoIP conforme a Apple o alterna
  • Siga atentamente as políticas de VoIP da Apple
Recursos da Apple:

2. Criar um novo aplicativo OneSignal para usuários VoIP

Você deve manter dois aplicativos OneSignal separados:
  • Aplicativo Push Principal: Para notificações push padrão
  • Aplicativo VoIP: Para notificações somente VoIP
Ambos os aplicativos devem:
  • Usar o mesmo iOS bundle ID
  • Estar associados ao mesmo aplicativo iOS nativo

3. Fazer upload de um certificado VoIP Services

No seu aplicativo VoIP do OneSignal:
  • Faça upload de um certificado VoIP Services (.p12)
  • Não reutilize seu certificado APNs padrão
Você deve fazer upload de um certificado VoIP Services (.p12) para o aplicativo VoIP, usando o mesmo bundle ID que seu aplicativo principal.

Certificado VoIP no Keychain Access

Certificado VoIP carregado no painel do OneSignal

4. Registrar o token VoIP com o OneSignal

Use a API Create User para registrar o token VoIP com seu aplicativo VoIP do OneSignal.
Se o token VoIP vem de uma compilação de desenvolvimento ou sandbox, você deve incluir a propriedade "test_type": 1.Se você omitir isso:
  • A chamada da API pode ter sucesso
  • O push falhará silenciosamente
curl --request POST \
     --url https://api.onesignal.com/apps/YOUR_VOIP_APP_ID/users \
     --header 'accept: application/json' \
     --header 'content-type: application/json' \
     --data '
{
  "subscriptions": [
    {
      "type": "iOSPush",
      "token": "your-voip-token",
      "test_type": 1 // omitir em produção
    }
  ]
}
'
Para atualizar o token posteriormente, use a API Update Subscription.

5. Enviar notificações VoIP

Use a API Create Notification e inclua os seguintes parâmetros:
  • "apns_push_type_override": "voip"
  • O app_id do seu aplicativo VoIP
  • O subscription_id do token VoIP que você registrou
curl --include \
     --request POST \
     --header "Content-Type: application/json; charset=utf-8" \
     --header "Authorization: key YOUR_REST_API_KEY" \
     --data-binary '{
  "app_id": "YOUR_VOIP_APP_ID",
  "contents": {"en": "English Message"},
  "apns_push_type_override": "voip",
  "include_subscription_ids": ["YOUR_VOIP_SUBSCRIPTION_ID"]
}' \
https://api.onesignal.com/notifications

6. Verificar sua configuração VoIP

Sua integração VoIP do iOS está funcionando se:
  1. O token VoIP aparece como uma assinatura de push do iOS no seu aplicativo VoIP
  2. Um push VoIP aciona pushRegistry(_:didReceiveIncomingPushWith:for:completion:)
  3. O aplicativo desperta mesmo quando encerrado ou em segundo plano

Perguntas frequentes

As entregas confirmadas funcionam com VoIP?

Não, as Entregas Confirmadas não são rastreadas para pushs VoIP. Elas dependem da Notification Service Extension, que não é acionada para notificações VoIP. Em vez disso, rastreie o recebimento por meio do evento nativo PushKit do iOS:
pushRegistry(_:didReceiveIncomingPushWith:for:completion:)
Este evento faz parte do destino do seu aplicativo principal e não requer uma extensão separada. Saiba mais na documentação VoIP da Apple.