Saltar al contenido principal

Descripción general

Las notificaciones push VoIP son manejadas de manera diferente por Apple que las notificaciones push estándar. Debido a estas restricciones de plataforma, OneSignal admite el envío de notificaciones VoIP, pero no gestiona el registro de tokens VoIP por ti. Debes:
  • Registrar tokens VoIP tú mismo usando Apple PushKit
  • Subir un certificado APNs específico de VoIP
  • Usar la API de OneSignal para registrar tokens y enviar notificaciones
OneSignal no registra ni actualiza automáticamente los tokens VoIP (PushKit). Debes registrar manualmente los tokens VoIP con OneSignal usando la API.

Diferencias de plataforma de un vistazo

Plataforma¿Push VoIP admitido?Cómo funciona
iOS✅ SíUsa Apple PushKit y un certificado APNs VoIP
Android❌ NoUsa pushs de solo datos para simular comportamiento de llamada

Si estás construyendo una aplicación de llamadas multiplataforma, usarás diferentes enfoques por plataforma.

Android: simular comportamiento tipo VoIP (no es VoIP verdadero)

Android no admite notificaciones push VoIP. No hay equivalente a Apple PushKit. En su lugar, las aplicaciones de llamadas de Android simulan el comportamiento VoIP usando:
  • Notificaciones push de solo datos
  • Servicios en primer plano
  • Interfaz de usuario de llamada personalizada
Puedes usar el soporte push normal de Android de OneSignal combinado con APIs nativas de Android para lograr esto. Enfoque recomendado:
  • Enviar notificaciones de solo datos
  • Manejarlas en tu aplicación para:
    • Iniciar un servicio en primer plano
    • Lanzar una actividad de interfaz de llamada
    • Mostrar una notificación de llamada entrante personalizada
Si deseas interceptar y controlar completamente el renderizado de notificaciones, usa la Extensión de Servicio de Notificación de Android. Recursos útiles:
La configuración de Android no es específica de OneSignal. OneSignal solo entrega la carga útil del push; tu aplicación maneja el comportamiento de llamada.

iOS: enviar notificaciones push VoIP verdaderas

En iOS, las notificaciones VoIP usan Apple PushKit y tienen reglas de entrega especiales que difieren de las notificaciones push estándar. Cómo funciona VoIP de iOS con OneSignal: Para notificaciones VoIP de iOS:
  1. Tu aplicación registra un token VoIP usando PushKit
  2. Subes un certificado APNs de VoIP Services a OneSignal
  3. Registras el token VoIP con OneSignal usando la API
  4. Envías pushs VoIP usando apns_push_type_override: “voip”
Debido a que Apple trata los pushs VoIP de manera diferente, OneSignal también debe tratarlos como una configuración de aplicación separada.

1. Registrar un token VoIP usando PushKit

Usa el framework PushKit de Apple para registrarte para notificaciones VoIP y recibir un token VoIP.
  • Implementa PushKit en tu aplicación
  • Almacena y actualiza el token VoIP a medida que Apple lo rota
  • Sigue de cerca las políticas VoIP de Apple
Recursos de Apple:

2. Crear una nueva aplicación OneSignal para usuarios VoIP

Debes mantener dos aplicaciones OneSignal separadas:
  • Aplicación Push Principal: Para notificaciones push estándar
  • Aplicación VoIP: Para notificaciones solo VoIP
Ambas aplicaciones deben:
  • Usar el mismo ID de bundle de iOS
  • Estar asociadas con la misma aplicación iOS nativa

3. Subir un certificado VoIP Services

En tu aplicación VoIP de OneSignal:
  • Sube un certificado VoIP Services (.p12)
  • No reutilices tu certificado APNs estándar
Debes subir un certificado VoIP Services (.p12) para la aplicación VoIP, usando el mismo ID de bundle que tu aplicación principal.

Certificado VoIP en Acceso a Llaveros

Certificado VoIP subido en el panel de OneSignal

4. Registrar el token VoIP con OneSignal

Usa la API Create User para registrar el token VoIP con tu aplicación VoIP de OneSignal.
Si el token VoIP proviene de una compilación de desarrollo o sandbox, debes incluir la propiedad "test_type": 1.Si omites esto:
  • La llamada a la API puede tener éxito
  • El push fallará 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 en producción
    }
  ]
}
'
Para actualizar el token más tarde, usa la API Update Subscription.

5. Enviar notificaciones VoIP

Usa la API Create Notification e incluye los siguientes parámetros:
  • "apns_push_type_override": "voip"
  • El app_id de tu aplicación VoIP
  • El subscription_id del token VoIP que registraste
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 tu configuración VoIP

Tu integración VoIP de iOS está funcionando si:
  1. El token VoIP aparece como una suscripción push de iOS en tu aplicación VoIP
  2. Un push VoIP activa pushRegistry(_:didReceiveIncomingPushWith:for:completion:)
  3. La aplicación se activa incluso cuando está terminada o en segundo plano

Preguntas frecuentes

¿Las entregas confirmadas funcionan con VoIP?

No, las Entregas Confirmadas no se rastrean para pushs VoIP. Dependen de la Notification Service Extension, que no se activa para notificaciones VoIP. En su lugar, rastrea la recepción a través del evento nativo PushKit de iOS:
pushRegistry(_:didReceiveIncomingPushWith:for:completion:)
Este evento es parte del objetivo de tu aplicación principal y no requiere una extensión separada. Aprende más en la documentación VoIP de Apple.