Envía notificaciones push VoIP en iOS con OneSignal usando el registro de tokens PushKit y un certificado VoIP, además de alternativas de Android para comportamiento similar a llamadas.
Las notificaciones push VoIP permiten que tu aplicación reciba alertas de llamadas entrantes incluso cuando la app está en segundo plano o finalizada. Apple maneja los pushes VoIP de manera diferente a las notificaciones push estándar: usan un tipo de certificado separado, un token separado (a través de PushKit) y reglas de entrega distintas.OneSignal admite el envío de pushes VoIP, pero el SDK de OneSignal no gestiona el registro de tokens VoIP. Tú eres responsable de:
Registrar tokens VoIP en tu app usando Apple PushKit
Crear una app de OneSignal dedicada con un Certificado de Servicios VoIP
Registrar tokens y enviar pushes a través de la API REST de OneSignal
En iOS, las notificaciones VoIP usan Apple PushKit y siguen reglas de entrega especiales que difieren de las notificaciones push estándar. Dado que Apple trata los pushes VoIP de manera diferente, OneSignal requiere una configuración de app separada para VoIP.
Antes de comenzar — estos son los errores más comunes al configurar VoIP:
No crear una app de OneSignal separada para VoIP. Apple requiere un tipo de certificado diferente para VoIP, por lo que OneSignal necesita una app dedicada para enviar pushes VoIP. Tu app de push existente no puede usarse para ambos.
Subir el certificado incorrecto. Necesitas un Certificado de Servicios VoIP (.p12), no tu certificado push APNs estándar. Usar el incorrecto provoca fallos de entrega silenciosos.
Olvidar test_type en sandbox. Al probar con una compilación de desarrollo, debes incluir "test_type": 1 al registrar el token. Sin él, la llamada a la API tiene éxito pero los pushes nunca llegan.
1
Registrar un token VoIP usando PushKit
Usa el framework PushKit de Apple para registrarte en notificaciones VoIP y recibir un token VoIP.
Implementa PushKit en tu app
Almacena y actualiza el token VoIP a medida que Apple lo rota
Sigue de cerca las políticas VoIP de Apple
Ejemplo: implementación del delegado PushKit
import PushKitclass AppDelegate: NSObject, PKPushRegistryDelegate { func registerForVoIPPushes() { let registry = PKPushRegistry(queue: .main) registry.delegate = self registry.desiredPushTypes = [.voIP] } func pushRegistry(_ registry: PKPushRegistry, didUpdatePushCredentials credentials: PKPushCredentials, for type: PKPushType) { let token = credentials.token.map { String(format: "%02x", $0) }.joined() // Pass this token to OneSignal — see Step 4 }}
Este es código estándar de Apple PushKit. OneSignal no proporciona un SDK de PushKit — tú registras el token por tu cuenta y lo pasas a OneSignal en el Paso 4.
Los pushes VoIP de Apple requieren un tipo de certificado diferente al de las notificaciones push estándar. Una sola app de OneSignal solo puede usar un tipo de certificado, por lo que debes crear dos apps de OneSignal separadas:
App Push Principal: Usa tu certificado APNs para notificaciones push estándar
App Push VoIP: Usa un Certificado de Servicios VoIP exclusivamente para notificaciones VoIP
Ambas apps deben usar el mismo bundle ID de iOS y estar asociadas con la misma app iOS nativa. No necesitas inicializar el SDK de OneSignal dos veces — la app VoIP solo se usa del lado del servidor para enviar pushes VoIP a través de la API.
El bundle ID (por ejemplo, com.yourcompany.appname) se encuentra en Xcode, en la pestaña General de tu target.
3
Subir un Certificado de Servicios VoIP
En tu app VoIP de OneSignal, sube un Certificado de Servicios VoIP (.p12). Este es un tipo de certificado diferente al certificado push APNs estándar que usas para las notificaciones regulares.Para crearlo:
Sigue los pasos para generar y descargar el certificado
Ábrelo en Acceso a Llaveros y expórtalo como archivo .p12
Sube el archivo .p12 a la configuración de iOS de tu app VoIP en OneSignal
No subas tu certificado push APNs estándar a la app VoIP. Si usas el tipo de certificado incorrecto, la API aceptará tu solicitud de push pero Apple la rechazará y la notificación nunca llegará.
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 app VoIP de OneSignal.
Las compilaciones sandbox/desarrollo requieren "test_type": 1. Si omites este campo, la llamada a la API tiene éxito y no devuelve ningún error, pero Apple trata el token como producción y rechaza silenciosamente cada push enviado a él.
Un token VoIP válido es una cadena hexadecimal en minúsculas de 64 caracteres (por ejemplo, a1b2c3d4e5f6...). PushKit no funciona en el Simulador de iOS — debes usar un dispositivo real para obtener un token válido.
Android no admite notificaciones push VoIP. No existe un equivalente a Apple PushKit.En su lugar, las apps de llamadas en 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 las APIs nativas de Android para lograrlo.Enfoque recomendado:
Enviar notificaciones de solo datos
Manejarlas en tu app 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 app gestiona el comportamiento de llamada.
No. Las Entregas Confirmadasno se rastrean para pushes VoIP. Las Entregas Confirmadas dependen de la Extensión de Servicio de Notificación, que no se activa para las notificaciones VoIP.En su lugar, rastrea la recepción a través del evento nativo PushKit de iOS:
¿Puedo enviar notificaciones VoIP desde el panel de OneSignal?
No. Las notificaciones VoIP deben enviarse a través de la API Create Notification con "apns_push_type_override": "voip". El panel no admite este parámetro.
Los pushes VoIP pueden fallar sin ningún error por parte de la API de OneSignal. Revisa esta lista de verificación:
¿Estás usando una compilación sandbox/desarrollo? Debes incluir "test_type": 1 al registrar el token a través de la API Create User. Sin él, el token se registra como producción, Apple rechaza el push y falla silenciosamente.
¿Subiste el certificado correcto? La app VoIP de OneSignal debe usar un Certificado de Servicios VoIP (.p12), no un certificado push APNs estándar. Ambos se ven similares en Acceso a Llaveros — verifica que el nombre del certificado comience con “VoIP Services”.
¿Estás enviando a la app de OneSignal correcta? El app_id en tu solicitud de envío debe ser el de tu app VoIP, no el de tu app push principal. La REST API Key también debe provenir de la app VoIP.
¿El token VoIP es válido? Los tokens expiran cuando la app se reinstala o el dispositivo se restaura. Verifica que el token sea una cadena hexadecimal en minúsculas de 64 caracteres y que haya sido registrado recientemente.
¿Tu app llama a reportNewIncomingVoIPPushPayload? A partir de iOS 13, Apple finaliza las apps que reciben un push VoIP pero no reportan una llamada a CallKit. Este es un requisito de Apple, no una limitación de OneSignal.