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.
Envía notificaciones push mediante programación usando la API REST.
Entregas confirmadas
Rastrea la confirmación de entrega de notificaciones push en plataformas compatibles.
Extensiones de servicio
Personaliza el manejo de notificaciones con Extensiones de Servicio de Notificación.
API de creación de usuarios
Registra usuarios y suscripciones con la API de OneSignal.
¿Esta página le ayudó?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"OneSignal","description":"OneSignal is a platform for sending push notifications, emails, in-app messages, and SMS campaigns via a single API, Journey Builder, and a dashboard.","colors":{"primary":"#3A3DB3","light":"#E54B4D","dark":"#3A3DB3"},"logo":{"light":"https://mintcdn.com/onesignal/yJcueeDCO7UpHnnY/logo/OneSignal-Logo.svg?fit=max\u0026auto=format\u0026n=yJcueeDCO7UpHnnY\u0026q=85\u0026s=1fcfb6fef6d820fd9d99c74850711107","dark":"https://mintcdn.com/onesignal/s4WC_KzLxf8ornqq/logo/OneSignal-Logo-White.svg?fit=max\u0026auto=format\u0026n=s4WC_KzLxf8ornqq\u0026q=85\u0026s=2573a53b5aea961e18c82b3af8f31925"},"favicon":"https://mintcdn.com/onesignal/SGduBFHpiRdg5l6h/favicon.ico?fit=max\u0026auto=format\u0026n=SGduBFHpiRdg5l6h\u0026q=85\u0026s=c0a99fadc0553c658a83741c5611cef4","api":{"examples":{"languages":["curl","typescript","python","php","go","ruby","java","csharp","rust"],"autogenerate":true}},"navbar":{"links":[{"href":"mailto:support@onesignal.com","label":"Support"}],"primary":{"type":"button","label":"Dashboard","href":"https://dashboard.onesignal.com"}},"footer":{"socials":{"github":"https://github.com/OneSignal","linkedin":"https://linkedin.com/company/onesignal","youtube":"https://www.youtube.com/@onesignalofficial/playlists"}},"seo":{"metatags":{"apple-mobile-web-app-title":"OneSignal Docs"}},"fonts":{"family":"Nunito Sans"},"styling":{"eyebrows":"breadcrumbs","latex":true},"integrations":{"ga4":{"measurementId":"G-2DGWL0VYP5"},"posthog":{"apiKey":"phc_vZpvE0f5eyzcOt30FHer34yddVmNdo9kmlMVRBzLMtn","apiHost":"https://eu.i.posthog.com","sessionRecording":true}},"contextual":{"options":["copy","view","chatgpt","claude"],"display":"header"},"navigation":{"languages":[{"language":"en","href":"docs/en/home"},{"language":"cn","href":"docs/cn/home"},{"language":"ko","href":"docs/ko/home"},{"language":"ja","href":"docs/ja/home"},{"language":"tr","href":"docs/tr/home"},{"language":"pt-BR","href":"docs/pt-BR/home"},{"language":"es","href":"docs/es/home"},{"language":"fr","href":"docs/fr/home"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"onesignal","hasAudioNarration":false,"actualSubdomain":"onesignal","customDomains":["documentation.onesignal.com"],"gitSource":{"type":"github","owner":"onesignal","repo":"mintlify-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae11e74212a940a5689cbb3","collectionId":"522138cb-edb7-4b84-a6f7-09c5b77a9ffa","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae11e74212a940a5689cbb3"},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae11e74212a940a5689cbb3","clientVersion":"0.0.4005","searchFilterCounts":[{"language":"en","tag":"User Guides","count":201},{"language":"es","tag":"Guías del Usuario","count":178},{"language":"fr","tag":"Guides utilisateur","count":178},{"language":"ja","tag":"ユーザーガイド","count":178},{"language":"ko","tag":"사용자 가이드","count":178},{"language":"pt-BR","tag":"Guia do Usuário","count":178},{"language":"tr","tag":"Kullanıcı Kılavuzları","count":178},{"language":"cn","tag":"用户指南","count":176},{"language":"en","tag":"Message channels","count":90},{"language":"es","tag":"Canales de mensajería","count":84},{"language":"fr","tag":"Canaux de messagerie","count":84},{"language":"ja","tag":"メッセージングチャネル","count":84},{"language":"ko","tag":"메시지 채널","count":84},{"language":"pt-BR","tag":"Canais de mensagem","count":84},{"language":"tr","tag":"Mesaj kanalları","count":84},{"language":"cn","tag":"消息渠道","count":83},{"language":"default","tag":"API Reference","count":68},{"language":"default","tag":"API reference","count":64},{"language":"en","tag":"Analytics \u0026 Integrations","count":53},{"language":"es","tag":"Analítica \u0026 Integraciones","count":52},{"language":"fr","tag":"Analyses et intégrations","count":52},{"language":"ja","tag":"分析 \u0026 統合","count":52},{"language":"ko","tag":"분석 \u0026 통합","count":52},{"language":"pt-BR","tag":"Análises \u0026 Integrações","count":52},{"language":"tr","tag":"Analitik ve Entegrasyonlar","count":52},{"language":"cn","tag":"分析和集成","count":51},{"language":"cn","tag":"开发者指南","count":48},{"language":"es","tag":"Guías del desarrollador","count":48},{"language":"fr","tag":"Guides développeur","count":48},{"language":"ja","tag":"開発者ガイド","count":48},{"language":"ko","tag":"개발자 가이드","count":48},{"language":"tr","tag":"Geliştirici Kılavuzları","count":48},{"language":"pt-BR","tag":"Guia de desenvolvedor","count":47},{"language":"en","tag":"Developer Guides","count":46},{"language":"en","tag":"Integrations","count":37},{"language":"es","tag":"Integraciones","count":37},{"language":"fr","tag":"Intégrations","count":37},{"language":"ja","tag":"統合","count":37},{"language":"ko","tag":"통합","count":37},{"language":"pt-BR","tag":"Integrações","count":37},{"language":"tr","tag":"Entegrasyonlar","count":37},{"language":"cn","tag":"集成","count":36},{"language":"en","tag":"Tutorials","count":35},{"language":"cn","tag":"推送通知","count":31},{"language":"cn","tag":"OneSignal 作为目的地","count":31},{"language":"en","tag":"Push","count":31},{"language":"en","tag":"OneSignal as destination","count":31},{"language":"es","tag":"Push notificaciones","count":31},{"language":"es","tag":"OneSignal como destino","count":31},{"language":"fr","tag":"Push","count":31},{"language":"fr","tag":"OneSignal comme destination","count":31},{"language":"ja","tag":"プッシュ通知","count":31},{"language":"ja","tag":"OneSignal as 宛先","count":31},{"language":"ko","tag":"푸시","count":31},{"language":"ko","tag":"OneSignal을 데이터 목적지로 사용","count":31},{"language":"pt-BR","tag":"Push notificações","count":31},{"language":"pt-BR","tag":"OneSignal como destino","count":31},{"language":"tr","tag":"Anlık bildirimler","count":31},{"language":"tr","tag":"OneSignal hedef","count":31},{"language":"cn","tag":"移动SDK","count":25},{"language":"en","tag":"Mobile SDKs","count":25},{"language":"es","tag":"SDKs móviles","count":25},{"language":"fr","tag":"SDK mobiles","count":25},{"language":"ja","tag":"モバイルSDK","count":25},{"language":"ko","tag":"모바일 SDKs","count":25},{"language":"pt-BR","tag":"SDKs móveis","count":25},{"language":"tr","tag":"Mobil SDK'lar","count":25},{"language":"cn","tag":"教程","count":24},{"language":"es","tag":"Tutoriales","count":24},{"language":"fr","tag":"Tutoriels","count":24},{"language":"ja","tag":"チュートリアル","count":24},{"language":"ko","tag":"튜토리얼","count":24},{"language":"pt-BR","tag":"Tutoriais","count":24},{"language":"tr","tag":"Eğitimler","count":24},{"language":"en","tag":"Email","count":19},{"language":"cn","tag":"移动SDK设置","count":18},{"language":"es","tag":"Configuración del SDK móvil","count":18},{"language":"fr","tag":"Configuration SDK mobile","count":18},{"language":"ja","tag":"モバイルSDKセットアップ","count":18},{"language":"ko","tag":"모바일 SDK 설정","count":18},{"language":"pt-BR","tag":"Configuração do SDK móvel","count":18},{"language":"tr","tag":"Mobil SDK kurulumu","count":18},{"language":"default","tag":"Messages","count":9},{"language":"default","tag":"Users","count":9},{"language":"default","tag":"Organization","count":9},{"language":"default","tag":"Journeys","count":8},{"language":"default","tag":"Deprecated","count":6},{"language":"default","tag":"Templates","count":6},{"language":"default","tag":"Subscriptions","count":6},{"language":"default","tag":"Segments","count":5}]},"assistantConfig":{"enableStarterQuestions":false,"deflection":{"enabled":true,"email":"support@onesignal.com","showHelpButton":true}},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":true},"customCss":[],"page":{"pagePath":"docs/es/voip-notifications","slug":"/docs/es/voip-notifications","pageMetadata":{"title":"Notificaciones push VoIP","description":"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.","keywords":["VoIP push notifications","iOS VoIP","PushKit","VoIP token","VoIP Services Certificate","android call notification"],"href":"/docs/es/voip-notifications"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"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.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,hr:`hr`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Accordion,Card,CodeBlock,Columns,Frame,Heading,Info,Note,OptimizedImage,Step,Steps,Table,Warning}=_components;if(!Accordion)_missingMdxReference(`Accordion`,true);if(!Card)_missingMdxReference(`Card`,true);if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Columns)_missingMdxReference(`Columns`,true);if(!Frame)_missingMdxReference(`Frame`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Info)_missingMdxReference(`Info`,true);if(!Note)_missingMdxReference(`Note`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`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.`}),`\n`,_jsxs(_components.p,{children:[`OneSignal admite el `,_jsx(_components.strong,{children:`envío`}),` de pushes VoIP, pero el SDK de OneSignal `,_jsx(_components.strong,{children:`no`}),` gestiona el registro de tokens VoIP. Tú eres responsable de:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Registrar tokens VoIP en tu app usando Apple PushKit`}),`\n`,_jsx(_components.li,{children:`Crear una app de OneSignal dedicada con un Certificado de Servicios VoIP`}),`\n`,_jsx(_components.li,{children:`Registrar tokens y enviar pushes a través de la API REST de OneSignal`}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`diferencias-de-plataforma`,children:`Diferencias de plataforma`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Plataforma`}),_jsx(_components.th,{children:`¿Push VoIP admitido?`}),_jsx(_components.th,{children:`Cómo funciona`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`iOS`})}),_jsx(_components.td,{children:`Yes`}),_jsx(_components.td,{children:`Usa Apple PushKit y un certificado APNs VoIP`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Android`})}),_jsx(_components.td,{children:`No`}),_jsx(_components.td,{children:`Usa pushes de solo datos para simular comportamiento de llamada`})]})]})]}),`\n`,_jsx(_components.p,{children:`Si estás desarrollando una app de llamadas multiplataforma, usarás enfoques diferentes por plataforma.`}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`ios-enviar-notificaciones-push-voip`,children:`iOS: enviar notificaciones push VoIP`}),`\n`,_jsx(_components.p,{children:`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.`}),`\n`,_jsxs(Warning,{children:[_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Antes de comenzar`}),` — estos son los errores más comunes al configurar VoIP:`]}),_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`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.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Subir el certificado incorrecto.`}),` Necesitas un `,_jsx(_components.strong,{children:`Certificado de Servicios VoIP (.p12)`}),`, no tu certificado push APNs estándar. Usar el incorrecto provoca fallos de entrega silenciosos.`]}),`\n`,_jsxs(_components.li,{children:[_jsxs(_components.strong,{children:[`Olvidar `,_jsx(_components.code,{children:`test_type`}),` en sandbox.`]}),` Al probar con una compilación de desarrollo, debes incluir `,_jsx(_components.code,{children:`\"test_type\": 1`}),` al registrar el token. Sin él, la llamada a la API tiene éxito pero los pushes nunca llegan.`]}),`\n`]})]}),`\n`,_jsxs(Steps,{children:[_jsxs(Step,{title:`Registrar un token VoIP usando PushKit`,children:[_jsx(_components.p,{children:`Usa el framework PushKit de Apple para registrarte en notificaciones VoIP y recibir un token VoIP.`}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Implementa PushKit en tu app`}),`\n`,_jsx(_components.li,{children:`Almacena y actualiza el token VoIP a medida que Apple lo rota`}),`\n`,_jsx(_components.li,{children:`Sigue de cerca las políticas VoIP de Apple`}),`\n`]}),_jsxs(Accordion,{title:`Ejemplo: implementación del delegado PushKit`,id:`ejemplo-implementacion-del-delegado-pushkit`,children:[_jsx(CodeBlock,{filename:``,numberOfLines:`14`,language:`swift`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`swift`,children:_jsxs(_components.code,{language:`swift`,numberOfLines:`14`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` PushKit`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`class`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` AppDelegate`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`NSObject`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`PKPushRegistryDelegate `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` func`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` registerForVoIPPushes`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`() {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` let`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` registry `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` PKPushRegistry`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`queue`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: .`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`main`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` registry.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`delegate`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` self`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` registry.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`desiredPushTypes`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` [.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`voIP`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` func`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` pushRegistry`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`_`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` registry`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: PKPushRegistry, `}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`didUpdatePushCredentials`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` credentials`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: PKPushCredentials, `}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`for`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` type`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: PKPushType) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` let`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` token `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` credentials.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`token`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`map`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`String`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`format`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"%02x\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`$0`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) }.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`joined`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`()`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` // Pass this token to OneSignal — see Step 4`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),_jsx(Note,{children:`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.`})]}),_jsx(_components.p,{children:`Recursos de Apple:`}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`https://developer.apple.com/documentation/pushkit`,children:`Documentación de PushKit`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`https://developer.apple.com/documentation/pushkit/responding_to_voip_notifications_from_pushkit`,children:`Responder a pushes VoIP`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`https://developer.apple.com/library/content/documentation/Performance/Conceptual/EnergyGuide-iOS/OptimizeVoIP.html`,children:`Mejores prácticas VoIP de Apple`})}),`\n`]})]}),_jsxs(Step,{title:`Crear una app de OneSignal separada para VoIP`,children:[_jsxs(_components.p,{children:[`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 `,_jsx(_components.strong,{children:`dos apps de OneSignal separadas`}),`:`]}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`App Push Principal`}),`: Usa tu certificado APNs para notificaciones push estándar`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`App Push VoIP`}),`: Usa un Certificado de Servicios VoIP exclusivamente para notificaciones VoIP`]}),`\n`]}),_jsxs(_components.p,{children:[`Ambas apps deben usar el mismo bundle ID de iOS y estar asociadas con la misma app iOS nativa. `,_jsx(_components.strong,{children:`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.`]}),_jsxs(Note,{children:[`El bundle ID (por ejemplo, `,_jsx(_components.code,{children:`com.yourcompany.appname`}),`) se encuentra en Xcode, en la pestaña `,_jsx(_components.strong,{children:`General`}),` de tu target.`]})]}),_jsxs(Step,{title:`Subir un Certificado de Servicios VoIP`,children:[_jsxs(_components.p,{children:[`En tu app VoIP de OneSignal, sube un `,_jsx(_components.strong,{children:`Certificado de Servicios VoIP (.p12)`}),`. Este es un tipo de certificado diferente al certificado push APNs estándar que usas para las notificaciones regulares.`]}),_jsx(_components.p,{children:`Para crearlo:`}),_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Ve al `,_jsx(_components.a,{href:`https://developer.apple.com/account/resources/certificates/add`,children:`Portal de Desarrolladores de Apple`})]}),`\n`,_jsxs(_components.li,{children:[`Selecciona `,_jsx(_components.strong,{children:`VoIP Services Certificate`})]}),`\n`,_jsx(_components.li,{children:`Sigue los pasos para generar y descargar el certificado`}),`\n`,_jsxs(_components.li,{children:[`Ábrelo en Acceso a Llaveros y expórtalo como archivo `,_jsx(_components.code,{children:`.p12`})]}),`\n`,_jsxs(_components.li,{children:[`Sube el archivo `,_jsx(_components.code,{children:`.p12`}),` a la configuración de iOS de tu app VoIP en OneSignal`]}),`\n`]}),_jsx(Warning,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`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á.`]})}),_jsx(Frame,{caption:`Certificado VoIP en Acceso a Llaveros`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/onesignal/jFWn5xzleD8du3j6/images/docs/6101554-Screen_Shot_2020-04-26_at_1.07.52_PM.png?fit=max\u0026auto=format\u0026n=jFWn5xzleD8du3j6\u0026q=85\u0026s=5d19f1262fdf67d5185ed8d8b4743493`,alt:`Certificado de Servicios VoIP mostrado en Acceso a Llaveros de macOS`,\"data-og-width\":`1868`,width:`1868`,\"data-og-height\":`1624`,height:`1624`,\"data-path\":`images/docs/6101554-Screen_Shot_2020-04-26_at_1.07.52_PM.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/onesignal/jFWn5xzleD8du3j6/images/docs/6101554-Screen_Shot_2020-04-26_at_1.07.52_PM.png?w=280\u0026fit=max\u0026auto=format\u0026n=jFWn5xzleD8du3j6\u0026q=85\u0026s=d57f41b5d7d08a261686c42154275181 280w, https://mintcdn.com/onesignal/jFWn5xzleD8du3j6/images/docs/6101554-Screen_Shot_2020-04-26_at_1.07.52_PM.png?w=560\u0026fit=max\u0026auto=format\u0026n=jFWn5xzleD8du3j6\u0026q=85\u0026s=8dba61a8e30c0c831fdb26dda2c3dcdb 560w, https://mintcdn.com/onesignal/jFWn5xzleD8du3j6/images/docs/6101554-Screen_Shot_2020-04-26_at_1.07.52_PM.png?w=840\u0026fit=max\u0026auto=format\u0026n=jFWn5xzleD8du3j6\u0026q=85\u0026s=d4d822861982c4795b5346fc84100991 840w, https://mintcdn.com/onesignal/jFWn5xzleD8du3j6/images/docs/6101554-Screen_Shot_2020-04-26_at_1.07.52_PM.png?w=1100\u0026fit=max\u0026auto=format\u0026n=jFWn5xzleD8du3j6\u0026q=85\u0026s=be2dfa06d3400d8c94275769fcdc15b9 1100w, https://mintcdn.com/onesignal/jFWn5xzleD8du3j6/images/docs/6101554-Screen_Shot_2020-04-26_at_1.07.52_PM.png?w=1650\u0026fit=max\u0026auto=format\u0026n=jFWn5xzleD8du3j6\u0026q=85\u0026s=fe3e85e100a8040fe7c8c1c4171358cc 1650w, https://mintcdn.com/onesignal/jFWn5xzleD8du3j6/images/docs/6101554-Screen_Shot_2020-04-26_at_1.07.52_PM.png?w=2500\u0026fit=max\u0026auto=format\u0026n=jFWn5xzleD8du3j6\u0026q=85\u0026s=7070b593a6f3809aca32feee7054c22d 2500w`})}),_jsx(Frame,{caption:`Certificado VoIP subido en el panel de OneSignal`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/onesignal/0qspEXXeJ8zJbkJ-/images/docs/81a2fea-a2a2e71-Screenshot_2024-02-23_at_1.32.08_PM.png?fit=max\u0026auto=format\u0026n=0qspEXXeJ8zJbkJ-\u0026q=85\u0026s=6ee92a10fc3473c644880fa7517eb46b`,alt:`Certificado de Servicios VoIP subido en el panel de OneSignal`,\"data-og-width\":`466`,width:`466`,\"data-og-height\":`130`,height:`130`,\"data-path\":`images/docs/81a2fea-a2a2e71-Screenshot_2024-02-23_at_1.32.08_PM.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/onesignal/0qspEXXeJ8zJbkJ-/images/docs/81a2fea-a2a2e71-Screenshot_2024-02-23_at_1.32.08_PM.png?w=280\u0026fit=max\u0026auto=format\u0026n=0qspEXXeJ8zJbkJ-\u0026q=85\u0026s=95a3a2c83752c51d43c1716a35ea5fe0 280w, https://mintcdn.com/onesignal/0qspEXXeJ8zJbkJ-/images/docs/81a2fea-a2a2e71-Screenshot_2024-02-23_at_1.32.08_PM.png?w=560\u0026fit=max\u0026auto=format\u0026n=0qspEXXeJ8zJbkJ-\u0026q=85\u0026s=bd44dde96a3d94780e6506beb6c7f4c0 560w, https://mintcdn.com/onesignal/0qspEXXeJ8zJbkJ-/images/docs/81a2fea-a2a2e71-Screenshot_2024-02-23_at_1.32.08_PM.png?w=840\u0026fit=max\u0026auto=format\u0026n=0qspEXXeJ8zJbkJ-\u0026q=85\u0026s=6de341e128c37fee7dc4d1829068b574 840w, https://mintcdn.com/onesignal/0qspEXXeJ8zJbkJ-/images/docs/81a2fea-a2a2e71-Screenshot_2024-02-23_at_1.32.08_PM.png?w=1100\u0026fit=max\u0026auto=format\u0026n=0qspEXXeJ8zJbkJ-\u0026q=85\u0026s=522fd6e38125b3223a941e37bc46811a 1100w, https://mintcdn.com/onesignal/0qspEXXeJ8zJbkJ-/images/docs/81a2fea-a2a2e71-Screenshot_2024-02-23_at_1.32.08_PM.png?w=1650\u0026fit=max\u0026auto=format\u0026n=0qspEXXeJ8zJbkJ-\u0026q=85\u0026s=50555ec34cfc42ed15fb1babc9b78267 1650w, https://mintcdn.com/onesignal/0qspEXXeJ8zJbkJ-/images/docs/81a2fea-a2a2e71-Screenshot_2024-02-23_at_1.32.08_PM.png?w=2500\u0026fit=max\u0026auto=format\u0026n=0qspEXXeJ8zJbkJ-\u0026q=85\u0026s=f492c4b3f1b74155ccb741eb94d9d6dc 2500w`})})]}),_jsxs(Step,{title:`Registrar el token VoIP con OneSignal`,children:[_jsxs(_components.p,{children:[`Usa la API `,_jsx(_components.a,{href:`/reference/create-user`,children:`Create User`}),` para registrar el token VoIP con tu app VoIP de OneSignal.`]}),_jsx(Warning,{children:_jsxs(_components.p,{children:[_jsxs(_components.strong,{children:[`Las compilaciones sandbox/desarrollo requieren `,_jsx(_components.code,{children:`\"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.`]})}),_jsx(CodeBlock,{filename:``,numberOfLines:`16`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`16`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`curl --request POST \\\\`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` --url https://api.onesignal.com/apps/YOUR_VOIP_APP_ID/users \\\\`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` --header 'accept: application/json' \\\\`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` --header 'content-type: application/json' \\\\`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` --data '`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`{`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` \"subscriptions\": [`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` {`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` \"type\": \"iOSPush\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` \"token\": \"YOUR_VOIP_TOKEN\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` \"test_type\": 1`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` ]`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`'`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),_jsxs(Note,{children:[`Un token VoIP válido es una cadena hexadecimal en minúsculas de 64 caracteres (por ejemplo, `,_jsx(_components.code,{children:`a1b2c3d4e5f6...`}),`). PushKit no funciona en el Simulador de iOS — debes usar un dispositivo real para obtener un token válido.`]}),_jsxs(_components.p,{children:[`Para actualizar el token más tarde, usa la API `,_jsx(_components.a,{href:`/reference/update-subscription`,children:`Update Subscription`}),`.`]})]}),_jsxs(Step,{title:`Enviar notificaciones VoIP`,children:[_jsxs(_components.p,{children:[`Usa la API `,_jsx(_components.a,{href:`/reference/create-message`,children:`Create Notification`}),` con los siguientes parámetros:`]}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`\"apns_push_type_override\": \"voip\"`}),` — indica a Apple que este es un push VoIP`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`app_id`}),` — el ID de tu app VoIP`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`include_subscription_ids`}),` — el ID de suscripción VoIP que registraste`]}),`\n`,_jsxs(_components.li,{children:[`Se requiere `,_jsx(_components.code,{children:`contents`}),` o `,_jsx(_components.code,{children:`content_available`})]}),`\n`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`15`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`15`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`curl --include \\\\`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` --request POST \\\\`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` --header \"Content-Type: application/json; charset=utf-8\" \\\\`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` --header \"Authorization: key YOUR_REST_API_KEY\" \\\\`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` --data-binary '{`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` \"app_id\": \"YOUR_VOIP_APP_ID\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` \"content_available\": true,`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` \"data\": {`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` \"your_custom_data\": \"your_custom_value\"`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` },`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` \"apns_push_type_override\": \"voip\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` \"include_subscription_ids\": [\"YOUR_VOIP_SUBSCRIPTION_ID\"]`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`}' \\\\`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`https://api.onesignal.com/notifications`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})})]}),_jsxs(Step,{title:`Verificar tu configuración VoIP`,children:[_jsx(_components.p,{children:`Tu integración VoIP de iOS funciona correctamente si:`}),_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`El token VoIP aparece como una suscripción push de iOS en tu `,_jsx(_components.strong,{children:`app VoIP`})]}),`\n`,_jsxs(_components.li,{children:[`Un push VoIP activa `,_jsx(_components.a,{href:`https://developer.apple.com/documentation/pushkit/responding_to_voip_notifications_from_pushkit`,children:_jsx(_components.code,{children:`pushRegistry(_:didReceiveIncomingPushWith:for:completion:)`})}),` en tu app`]}),`\n`,_jsx(_components.li,{children:`La app se activa incluso cuando está finalizada o en segundo plano`}),`\n`]})]})]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`android-simular-comportamiento-tipo-voip`,children:`Android: simular comportamiento tipo VoIP`}),`\n`,_jsx(_components.p,{children:`Android no admite notificaciones push VoIP. No existe un equivalente a Apple PushKit.`}),`\n`,_jsx(_components.p,{children:`En su lugar, las apps de llamadas en Android simulan el comportamiento VoIP usando:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Notificaciones push de solo datos`}),`\n`,_jsx(_components.li,{children:`Servicios en primer plano`}),`\n`,_jsx(_components.li,{children:`Interfaz de usuario de llamada personalizada`}),`\n`]}),`\n`,_jsx(_components.p,{children:`Puedes usar el soporte push normal de Android de OneSignal combinado con las APIs nativas de Android para lograrlo.`}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Enfoque recomendado:`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Enviar notificaciones de solo datos`}),`\n`,_jsxs(_components.li,{children:[`Manejarlas en tu app para:`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Iniciar un servicio en primer plano`}),`\n`,_jsx(_components.li,{children:`Lanzar una actividad de interfaz de llamada`}),`\n`,_jsx(_components.li,{children:`Mostrar una notificación de llamada entrante personalizada`}),`\n`]}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`Si deseas interceptar y controlar completamente el renderizado de notificaciones, usa la `,_jsx(_components.a,{href:`/docs/es/service-extensions#notification-service-extension`,children:`Extensión de Servicio de Notificación`}),` de Android.`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Recursos útiles:`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`https://developer.android.com/guide/topics/connectivity/telecom/selfManaged`,children:`Guía de app de llamadas de Android`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`https://medium.com/@dcostalloyd90/show-incoming-voip-call-notification-and-open-activity-for-android-os-10-5aada2d4c1e4`,children:`Ejemplo de interfaz de llamada entrante`})}),`\n`]}),`\n`,_jsxs(Info,{children:[`La configuración de Android `,_jsx(_components.strong,{children:`no es específica de OneSignal`}),`. OneSignal solo entrega la carga útil del push; tu app gestiona el comportamiento de llamada.`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`preguntas-frecuentes`,children:`Preguntas frecuentes`}),`\n`,_jsx(Heading,{level:`3`,id:`¿las-entregas-confirmadas-funcionan-con-voip`,children:`¿Las entregas confirmadas funcionan con VoIP?`}),`\n`,_jsxs(_components.p,{children:[`No. Las `,_jsx(_components.a,{href:`/docs/es/confirmed-delivery`,children:`Entregas Confirmadas`}),` `,_jsx(_components.strong,{children:`no 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.`]}),`\n`,_jsx(_components.p,{children:`En su lugar, rastrea la recepción a través del evento nativo PushKit de iOS:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`swift`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`swift`,children:_jsxs(_components.code,{language:`swift`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`pushRegistry`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(_:`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`didReceiveIncomingPushWith:for:completion:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Este evento es parte del target de tu app principal y no requiere una extensión separada. Consulta la `,_jsx(_components.a,{href:`https://developer.apple.com/documentation/pushkit/responding_to_voip_notifications_from_pushkit#3377587`,children:`documentación VoIP de Apple`}),` para más detalles.`]}),`\n`,_jsx(Heading,{level:`3`,id:`¿puedo-enviar-notificaciones-voip-desde-el-panel-de-onesignal`,children:`¿Puedo enviar notificaciones VoIP desde el panel de OneSignal?`}),`\n`,_jsxs(_components.p,{children:[`No. Las notificaciones VoIP deben enviarse a través de la API `,_jsx(_components.a,{href:`/reference/create-message`,children:`Create Notification`}),` con `,_jsx(_components.code,{children:`\"apns_push_type_override\": \"voip\"`}),`. El panel no admite este parámetro.`]}),`\n`,_jsx(Heading,{level:`3`,id:`¿por-qué-mi-push-voip-falla-silenciosamente`,children:`¿Por qué mi push VoIP falla silenciosamente?`}),`\n`,_jsx(_components.p,{children:`Los pushes VoIP pueden fallar sin ningún error por parte de la API de OneSignal. Revisa esta lista de verificación:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`¿Estás usando una compilación sandbox/desarrollo?`}),` Debes incluir `,_jsx(_components.code,{children:`\"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.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`¿Subiste el certificado correcto?`}),` La app VoIP de OneSignal debe usar un `,_jsx(_components.strong,{children:`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”.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`¿Estás enviando a la app de OneSignal correcta?`}),` El `,_jsx(_components.code,{children:`app_id`}),` en tu solicitud de envío debe ser el de tu `,_jsx(_components.strong,{children:`app VoIP`}),`, no el de tu app push principal. La `,_jsx(_components.code,{children:`REST API Key`}),` también debe provenir de la app VoIP.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`¿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.`]}),`\n`,_jsxs(_components.li,{children:[_jsxs(_components.strong,{children:[`¿Tu app llama a `,_jsx(_components.code,{children:`reportNewIncomingVoIPPushPayload`}),`?`]}),` A partir de iOS 13, Apple `,_jsx(_components.strong,{children:`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.`]}),`\n`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`páginas-relacionadas`,children:`Páginas relacionadas`}),`\n`,_jsxs(Columns,{cols:2,children:[_jsx(Card,{title:`API de creación de mensajes`,icon:`code`,href:`/reference/create-message`,children:_jsx(_components.p,{children:`Envía notificaciones push mediante programación usando la API REST.`})}),_jsx(Card,{title:`Entregas confirmadas`,icon:`circle-check`,href:`/docs/es/confirmed-delivery`,children:_jsx(_components.p,{children:`Rastrea la confirmación de entrega de notificaciones push en plataformas compatibles.`})}),_jsx(Card,{title:`Extensiones de servicio`,icon:`puzzle-piece`,href:`/docs/es/service-extensions`,children:_jsx(_components.p,{children:`Personaliza el manejo de notificaciones con Extensiones de Servicio de Notificación.`})}),_jsx(Card,{title:`API de creación de usuarios`,icon:`user-plus`,href:`/reference/create-user`,children:_jsx(_components.p,{children:`Registra usuarios y suscripciones con la API de OneSignal.`})})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Notificaciones push VoIP","description":"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.","keywords":["VoIP push notifications","iOS VoIP","PushKit","VoIP token","VoIP Services Certificate","android call notification"],"href":"/docs/es/voip-notifications"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Diferencias de plataforma","slug":"diferencias-de-plataforma","depth":3,"children":[]},{"title":"iOS: enviar notificaciones push VoIP","slug":"ios-enviar-notificaciones-push-voip","depth":2,"children":[]},{"title":"Android: simular comportamiento tipo VoIP","slug":"android-simular-comportamiento-tipo-voip","depth":2,"children":[]},{"title":"Preguntas frecuentes","slug":"preguntas-frecuentes","depth":2,"children":[{"title":"¿Las entregas confirmadas funcionan con VoIP?","slug":"¿las-entregas-confirmadas-funcionan-con-voip","depth":3,"children":[]},{"title":"¿Puedo enviar notificaciones VoIP desde el panel de OneSignal?","slug":"¿puedo-enviar-notificaciones-voip-desde-el-panel-de-onesignal","depth":3,"children":[]},{"title":"¿Por qué mi push VoIP falla silenciosamente?","slug":"¿por-qué-mi-push-voip-falla-silenciosamente","depth":3,"children":[]}]},{"title":"Páginas relacionadas","slug":"páginas-relacionadas","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/onesignal/e069c1b9f3157e14/hotjar-koala.js","/_mintlify/custom/onesignal/3e5d03885ab32f49/intercom.js","/_mintlify/custom/onesignal/dbb7af4794d1b586/munchkin-marketo.js"],"subdomain":"onesignal","siteName":"OneSignal","title":"Notificaciones push VoIP - OneSignal","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/docs/en/voip-notifications","matchLevel":1},"cn":{"href":"/docs/cn/voip-notifications","matchLevel":1},"ko":{"href":"/docs/ko/voip-notifications","matchLevel":1},"ja":{"href":"/docs/ja/voip-notifications","matchLevel":1},"tr":{"href":"/docs/tr/voip-notifications","matchLevel":1},"pt-BR":{"href":"/docs/pt-BR/voip-notifications","matchLevel":1},"es":{"href":"/docs/es/voip-notifications","matchLevel":0},"fr":{"href":"/docs/fr/voip-notifications","matchLevel":1}}},"lastModified":"2026-03-13T20:50:03.462Z","originalFileLocation":"docs/es/voip-notifications.mdx","locale":"es"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"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.\">\u003cmeta data-mint-head name=\"application-name\" content=\"OneSignal\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/onesignal/eCiRydtW5fLfLRWp/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/onesignal/eCiRydtW5fLfLRWp/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/onesignal/eCiRydtW5fLfLRWp/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/onesignal/eCiRydtW5fLfLRWp/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/onesignal/eCiRydtW5fLfLRWp/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/onesignal/eCiRydtW5fLfLRWp/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/onesignal/eCiRydtW5fLfLRWp/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/onesignal/eCiRydtW5fLfLRWp/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/onesignal/eCiRydtW5fLfLRWp/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Notificaciones push VoIP - OneSignal\">\u003cmeta data-mint-head property=\"og:description\" content=\"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.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"OneSignal\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://documentation.onesignal.com/docs/es/voip-notifications\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://onesignal.mintlify.app/_mintlify/api/og/v2?division=Push+m%C3%B3vil\u0026amp;title=Notificaciones+push+VoIP\u0026amp;description=Env%C3%ADa+notificaciones+push+VoIP+en+iOS+con+OneSignal+usando+el+registro+de+tokens+PushKit+y+un+certificado+VoIP%2C+adem%C3%A1s+de+alternativas+de+Android+para+comportam\u0026amp;theme=8d648f04f85028b307bd669b\u0026amp;signature=f3d6340fb0230a46bd60320be7e8e86e3052fabddd25a901fa308f79e9b3a1fd\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Notificaciones push VoIP - OneSignal\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"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.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://onesignal.mintlify.app/_mintlify/api/og/v2?division=Push+m%C3%B3vil\u0026amp;title=Notificaciones+push+VoIP\u0026amp;description=Env%C3%ADa+notificaciones+push+VoIP+en+iOS+con+OneSignal+usando+el+registro+de+tokens+PushKit+y+un+certificado+VoIP%2C+adem%C3%A1s+de+alternativas+de+Android+para+comportam\u0026amp;theme=8d648f04f85028b307bd669b\u0026amp;signature=f3d6340fb0230a46bd60320be7e8e86e3052fabddd25a901fa308f79e9b3a1fd\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/onesignal/eCiRydtW5fLfLRWp/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"OneSignal Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#3A3DB3\">\u003clink data-mint-head rel=\"canonical\" href=\"https://documentation.onesignal.com/docs/es/voip-notifications\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/es/voip-notifications.md\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"es\" href=\"https://documentation.onesignal.com/docs/es/voip-notifications\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"en\" href=\"https://documentation.onesignal.com/docs/en/voip-notifications\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"zh\" href=\"https://documentation.onesignal.com/docs/cn/voip-notifications\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ko\" href=\"https://documentation.onesignal.com/docs/ko/voip-notifications\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ja\" href=\"https://documentation.onesignal.com/docs/ja/voip-notifications\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"tr\" href=\"https://documentation.onesignal.com/docs/tr/voip-notifications\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"pt-BR\" href=\"https://documentation.onesignal.com/docs/pt-BR/voip-notifications\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"fr\" href=\"https://documentation.onesignal.com/docs/fr/voip-notifications\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"x-default\" href=\"https://documentation.onesignal.com/docs/en/voip-notifications\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://documentation.onesignal.com/#organization\",\"name\":\"OneSignal\",\"url\":\"https://documentation.onesignal.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/onesignal/yJcueeDCO7UpHnnY/logo/OneSignal-Logo.svg?fit=max\u0026auto=format\u0026n=yJcueeDCO7UpHnnY\u0026q=85\u0026s=1fcfb6fef6d820fd9d99c74850711107\"}},{\"@type\":\"WebSite\",\"@id\":\"https://documentation.onesignal.com#website\",\"name\":\"OneSignal\",\"url\":\"https://documentation.onesignal.com\",\"publisher\":{\"@id\":\"https://documentation.onesignal.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://documentation.onesignal.com/docs/es/voip-notifications#webpage\",\"url\":\"https://documentation.onesignal.com/docs/es/voip-notifications\",\"name\":\"Notificaciones push VoIP\",\"description\":\"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.\",\"dateModified\":\"2026-03-13T20:50:03.462Z\",\"isPartOf\":{\"@id\":\"https://documentation.onesignal.com#website\"},\"breadcrumb\":{\"@id\":\"https://documentation.onesignal.com/docs/es/voip-notifications#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://documentation.onesignal.com/docs/es/voip-notifications#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Canales de mensajería\",\"item\":\"https://documentation.onesignal.com/docs/es/channel-setup\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Push notificaciones\",\"item\":\"https://documentation.onesignal.com/docs/es/push\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Push móvil\",\"item\":\"https://documentation.onesignal.com/docs/es/mobile-push-setup\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Notificaciones push VoIP\",\"item\":\"https://documentation.onesignal.com/docs/es/voip-notifications\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://documentation.onesignal.com/docs/es/voip-notifications#article\",\"headline\":\"Notificaciones push VoIP\",\"name\":\"Notificaciones push VoIP\",\"description\":\"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.\",\"url\":\"https://documentation.onesignal.com/docs/es/voip-notifications\",\"mainEntityOfPage\":{\"@id\":\"https://documentation.onesignal.com/docs/es/voip-notifications#webpage\"},\"dateModified\":\"2026-03-13T20:50:03.462Z\",\"keywords\":\"VoIP push notifications, iOS VoIP, PushKit, VoIP token, VoIP Services Certificate, android call notification\",\"publisher\":{\"@id\":\"https://documentation.onesignal.com/#organization\"},\"isPartOf\":{\"@id\":\"https://documentation.onesignal.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"OneSignal\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"OneSignal","nav":{"global":null,"languages":[{"language":"en","pages":[{"title":"en","href":"/docs/en/voip-notifications"}]},{"language":"cn","pages":[{"title":"cn","href":"/docs/cn/voip-notifications"}]},{"language":"ko","pages":[{"title":"ko","href":"/docs/ko/voip-notifications"}]},{"language":"ja","pages":[{"title":"ja","href":"/docs/ja/voip-notifications"}]},{"language":"tr","pages":[{"title":"tr","href":"/docs/tr/voip-notifications"}]},{"language":"pt-BR","pages":[{"title":"pt-BR","href":"/docs/pt-BR/voip-notifications"}]},{"language":"es","tabs":[{"tab":"Inicio","pages":[{"title":"Inicio","href":"/docs/es/home"}]},{"tab":"Guías del Usuario","groups":[{"group":"Primeros pasos \u0026 configuraciones","pages":[{"title":"Guía de inicio rápido","href":"/docs/es/quickstart-guide"},{"group":"OneSignal panel","pages":[{"title":"Aplicaciones, organizaciones y cuentas","href":"/docs/es/apps-organizations"},{"title":"Miembros del equipo","href":"/docs/es/manage-team-members"},{"title":"Claves e IDs","href":"/docs/es/keys-and-ids"},{"title":"Registros de auditoría","href":"/docs/es/audit-logs"},{"title":"Uso y facturación","href":"/docs/es/billing-faq"},{"title":"Aplicaciones y organizaciones deshabilitadas","href":"/docs/es/disabled-apps"}]},{"title":"Migrar a OneSignal","href":"/docs/es/migrating-to-onesignal"}]},{"group":"Canales de mensajería","pages":[{"title":"Configuración de canales","href":"/docs/es/channel-setup"},{"group":"Push notificaciones","pages":[{"title":"Resumen de notificaciones push","href":"/docs/es/push"},{"group":"Push móvil","pages":[{"title":"Configuración de push móvil","href":"/docs/es/mobile-push-setup"},{"title":"Solicitar permisos push","href":"/docs/es/prompt-for-push-permissions"},{"title":"Notificaciones push provisionales de iOS","href":"/docs/es/ios-provisional-push-notifications"},{"title":"Categorías de notificación de Android","href":"/docs/es/android-notification-categories"},{"title":"Notificaciones de datos y en segundo plano","description":"Envíe notificaciones push silenciosas para sincronizar datos o activar tareas en segundo plano en iOS y Android sin mostrar un mensaje visible.","href":"/docs/es/data-notifications"},{"title":"Notificaciones push VoIP","href":"/docs/es/voip-notifications"}]},{"group":"Push web","pages":[{"title":"Configuración web push","description":"Configura notificaciones web push con OneSignal para re-involucrar usuarios en Chrome, Firefox, Safari y Edge. Configura tu sitio, prompts y service worker.","href":"/docs/es/web-push-setup"},{"title":"Solicitudes de permiso web","href":"/docs/es/permission-requests"},{"title":"Preguntas frecuentes Web push","href":"/docs/es/web-push-setup-faq"},{"title":"Comportamiento del navegador de web push","href":"/docs/es/browser-behavior-and-unsubscribes"},{"title":"Plugin de WordPress de OneSignal para push web","href":"/docs/es/wordpress"},{"title":"Solución de problemas WordPress","href":"/docs/es/troubleshooting-wordpress-web-push"},{"title":"Integración de Shopify para push web","href":"/docs/es/shopify"}]},{"group":"Características de Push","pages":[{"title":"Iconos de notificación","href":"/docs/es/notification-icons"},{"title":"Imágenes de notificación y medios enriquecidos","href":"/docs/es/rich-media"},{"title":"Sonidos de notificación","href":"/docs/es/notification-sounds"},{"title":"Insignias de notificación","href":"/docs/es/badges"},{"title":"Botones de acción para notificaciones push","href":"/docs/es/action-buttons"},{"title":"Límite de frecuencia push","href":"/docs/es/frequency-capping"},{"title":"Limitación de push","href":"/docs/es/throttling"},{"title":"iOS: Modos de concentración y niveles de interrupción","href":"/docs/es/ios-focus-modes-and-interruption-levels"},{"title":"iOS: Puntuación de relevancia","href":"/docs/es/ios-relevance-score"}]},{"group":"Analytics \u0026 troubleshooting de Push notificaciones","pages":[{"title":"Reportes de mensajes push","href":"/docs/es/push-notification-message-reports"},{"title":"Entrega confirmada","href":"/docs/es/confirmed-delivery"},{"title":"CTR de notificaciones","href":"/docs/es/notification-ctr"},{"title":"Mobile push: Notificaciones no mostradas o retrasadas","href":"/docs/es/notifications-show-successful-but-are-not-being-shown"},{"title":"Web push: Notificaciones no mostradas","href":"/docs/es/notifications-not-shown-web-push"},{"title":"Imágenes de notificaciones que no se muestran","href":"/docs/es/notification-images-not-showing"},{"title":"Notificaciones duplicadas","href":"/docs/es/duplicated-notifications"},{"title":"FAQ de Token Expirado de FCM","href":"/docs/es/fcm-expired-token-faq"}]}]},{"group":"Mensajes in-app","pages":[{"title":"Descripción general de mensajes dentro de la aplicación","href":"/docs/es/in-app-messages-setup"},{"title":"Activadores de mensajes en la aplicación","href":"/docs/es/iam-triggers"},{"title":"Acciones de clic en mensajes dentro de la aplicación","href":"/docs/es/iam-click-actions"},{"group":"Diseño de mensajes in-app","pages":[{"title":"Diseñar mensajes in-app con arrastrar y soltar","href":"/docs/es/design-your-in-app-message"},{"title":"Diseñar mensajes in-app con HTML","href":"/docs/es/design-your-in-app-message-with-html"},{"title":"Plantillas y guías rápidas de mensajes in-app","href":"/docs/es/in-app-html-templates"},{"title":"Referencia de API JavaScript de mensajes dentro de la aplicación","href":"/docs/es/in-app-message-api"}]},{"title":"Informes de mensajes dentro de la aplicación","href":"/docs/es/in-app-message-reports"},{"title":"Solución de problemas dentro de la aplicación","href":"/docs/es/in-app-message-troubleshooting"}]},{"group":"Email","pages":[{"title":"Resumen de Email","href":"/docs/es/email-messaging"},{"group":"Configuración de Email","pages":[{"title":"Configuración de Email","href":"/docs/es/email-setup"},{"title":"Configuración de DNS de email","href":"/docs/es/email-dns-configuration"},{"title":"Remitentes","href":"/docs/es/senders"},{"title":"Emails transaccionales","href":"/docs/es/setup-transactional-emails"},{"title":"Crear una página de cancelación de suscripción de correo electrónico personalizada","href":"/docs/es/create-custom-unsubscribe-page"}]},{"group":"Entregabilidad de Email","pages":[{"title":"Informes de mensajes de correo electrónico","href":"/docs/es/email-message-reports"},{"title":"Entregabilidad de email","href":"/docs/es/email-deliverability"},{"title":"Mejores prácticas de reputación de email","href":"/docs/es/email-reputation-best-practices"},{"title":"Validación de dirección de email","href":"/docs/es/email-address-validation"},{"title":"Guía de calentamiento de Email","href":"/docs/es/email-warm-up"},{"title":"Google Postmaster Tools","href":"/docs/es/google-postmaster-tools"},{"title":"Supresiones","href":"/docs/es/suppressions"},{"title":"Solución de problemas de Email","href":"/docs/es/email-troubleshooting"}]},{"group":"Mensajería de Email","pages":[{"title":"Diseñar correos electrónicos con arrastrar y soltar","href":"/docs/es/design-emails-with-drag-and-drop"},{"title":"Diseñar correos electrónicos con HTML","href":"/docs/es/design-emails-with-html"},{"title":"Enlaces de cancelación de suscripción y encabezados de email","href":"/docs/es/unsubscribe-links-email-subscriptions"},{"title":"Reenvío de plantillas de Email","href":"/docs/es/email-template-forwarding"}]}]},{"group":"SMS \u0026 RCS","pages":[{"title":"Resumen de SMS, MMS y RCS","href":"/docs/es/sms-messaging"},{"title":"Rich Communication Services (RCS)","href":"/docs/es/rcs-messaging"},{"group":"Configuración de SMS","pages":[{"title":"Configuración de SMS","href":"/docs/es/sms-setup"},{"title":"Solicitudes de recursos de remitente y requisitos por país","sidebarTitle":"Solicitudes de recursos de remitente","href":"/docs/es/sms-registration-requirements"},{"title":"Opt-in y recopilación de SMS","href":"/docs/es/sms-opt-in-and-collection"},{"title":"Gestión de palabras clave de consentimiento SMS","href":"/docs/es/sms-consent-keyword-management"},{"title":"Palabras clave SMS","href":"/docs/es/keywords"}]},{"group":"Mensajería de SMS","pages":[{"title":"Informes de mensajes SMS","href":"/docs/es/sms-message-reports"},{"title":"Contraseñas de un solo uso (OTP)","sidebarTitle":"Contraseñas de un solo uso","href":"/docs/es/sms-verify"}]}]},{"group":"Actividades en directo","pages":[{"title":"Live Activities","href":"/docs/es/live-activities"},{"title":"Análisis de Live Activities","href":"/docs/es/live-activities-analytics"}]},{"group":"Características","pages":[{"title":"Pruebas A/B","href":"/docs/es/ab-testing"},{"title":"Mensajería multiidioma","href":"/docs/es/multi-language-messaging"},{"group":"Personalización","pages":[{"title":"Personalización","href":"/docs/es/message-personalization"},{"title":"Uso de sintaxis Liquid","href":"/docs/es/using-liquid-syntax"},{"title":"Feeds de datos","href":"/docs/es/data-feeds"},{"title":"Personaliza con Custom Events","href":"/docs/es/personalization-custom-event"},{"title":"Personalizar con propiedades","href":"/docs/es/personalization-properties-and-tags"},{"title":"Personalizar mensajes con custom_data de la API","href":"/docs/es/personalization-api-custom-data"},{"title":"Contenido dinámico con CSV","href":"/docs/es/dynamic-content"}]},{"group":"URLs, Links y Deep Links","pages":[{"title":"URLs, enlaces y deep links","href":"/docs/es/links"},{"title":"Deep Linking","href":"/docs/es/deep-linking"},{"title":"Enlaces de cancelación de suscripción y encabezados de email","href":"/docs/es/unsubscribe-links-email-subscriptions"}]},{"title":"Mensajes de reorientación","href":"/docs/es/retargeting"},{"title":"Plantillas","href":"/docs/es/templates"},{"title":"Etiquetas","href":"/docs/es/labels"}]}]},{"group":"Journeys","pages":[{"title":"Resumen de Journeys","href":"/docs/es/journeys-overview"},{"group":"Características de Journey","pages":[{"title":"Configuración de Journey","href":"/docs/es/journeys-settings"},{"title":"Mensajes de Journey","href":"/docs/es/journeys-messages"},{"title":"Acciones de Journey","href":"/docs/es/journeys-actions"},{"title":"Webhooks de Journey","href":"/docs/es/journeys-webhook"},{"title":"Enviar Mensajes de WhatsApp vía Webhooks de Journey","href":"/docs/es/sending-whatsapp-messages-via-journey-webhooks"},{"title":"Gestionar Journeys","href":"/docs/es/managing-journeys"},{"title":"Analítica de Journey","href":"/docs/es/journeys-analytics"}]},{"title":"Ejemplos de Journey","href":"/docs/es/journeys-examples"}]},{"group":"Audiencia \u0026 eventos personalizados","pages":[{"title":"Segmentos","href":"/docs/es/segmentation"},{"group":"Usuarios \u0026 Suscripciones","pages":[{"title":"Usuarios","href":"/docs/es/users"},{"title":"Suscripciones","href":"/docs/es/subscriptions"},{"title":"Aliases","href":"/docs/es/aliases"},{"title":"Usuarios de prueba","href":"/docs/es/test-users"},{"title":"Eliminar usuarios","href":"/docs/es/delete-users"}]},{"group":"Eventos personalizados","pages":[{"title":"Eventos personalizados","href":"/docs/es/custom-events"},{"title":"Almacenamiento y retención de eventos personalizados","href":"/docs/es/custom-event-storage"}]},{"group":"Etiquetas","pages":[{"title":"Etiquetas","href":"/docs/es/add-user-data-tags"},{"title":"Etiquetas: Operadores de tiempo","href":"/docs/es/time-operators"}]},{"title":"Importar","href":"/docs/es/import"}]},{"group":"Analítica \u0026 Integraciones","pages":[{"group":"Analítica","pages":[{"title":"Descripción general de Analytics","href":"/docs/es/analytics-overview"},{"title":"Objetivos","sidebarTitle":"Objetivos","href":"/docs/es/goals"},{"title":"Análisis de plantillas","href":"/docs/es/template-analytics"},{"title":"Exportar datos","href":"/docs/es/exporting-data"},{"title":"Outcomes personalizados","href":"/docs/es/custom-outcomes"},{"title":"Métricas de conversión","href":"/docs/es/conversion-metrics"},{"title":"Tendencias de compromiso","href":"/docs/es/engagement-analytics"},{"title":"Tendencias de suscripción","href":"/docs/es/subscription-trends"},{"group":"Métricas de retención","pages":[{"title":"Métricas de retención","href":"/docs/es/retention-metrics"},{"title":"Interpretación de curvas de retención","href":"/docs/es/interpreting-retention-curves"}]},{"title":"Glosario de Métricas","href":"/docs/es/analytics-metrics-glossary"}]},{"group":"Event Streams","pages":[{"title":"Event Streams","href":"/docs/es/event-streams"},{"title":"Referencia de datos de Event Stream","sidebarTitle":"Datos de Event Stream","href":"/docs/es/event-streams-data"},{"title":"Flujos de eventos de mensajes dentro de la aplicación","href":"/docs/es/iam-event-streams"},{"title":"Integración de Google Sheets con Event Streams","href":"/docs/es/google-sheets-integration-with-event-streams"}]},{"group":"Integraciones","pages":[{"title":"Resumen de integraciones","href":"/docs/es/integrations"},{"title":"Integración de almacén de datos, DMP y CRM","href":"/docs/es/database-dmp-crm-integration"},{"group":"OneSignal como fuente de datos","pages":[{"title":"Amplitude","href":"/docs/es/amplitude"},{"title":"Databricks","href":"/docs/es/databricks"},{"title":"Google BigQuery","href":"/docs/es/bigquery"},{"title":"Mixpanel","href":"/docs/es/mixpanel"},{"title":"Snowflake","href":"/docs/es/snowflake"},{"title":"Segment (Twilio)","href":"/docs/es/segment-onesignal-integration"}]},{"group":"OneSignal como destino","pages":[{"title":"Adobe Audience Manager","href":"/docs/es/adobe-audience-manager"},{"title":"AlloyDB","href":"/docs/es/alloydb"},{"title":"Amazon Athena","href":"/docs/es/amazon-athena"},{"title":"Amazon S3","href":"/docs/es/s3"},{"title":"Amplitude","href":"/docs/es/amplitude"},{"title":"Apache Kafka","href":"/docs/es/kafka"},{"title":"Amazon Redshift","href":"/docs/es/amazon-redshift"},{"title":"Azure Synapse","href":"/docs/es/azure-synapse"},{"title":"ClickHouse","href":"/docs/es/clickhouse"},{"title":"Confluent Cloud","href":"/docs/es/confluent-cloud"},{"title":"Databricks","href":"/docs/es/databricks"},{"title":"Elasticsearch","href":"/docs/es/elasticsearch"},{"title":"Google BigQuery","href":"/docs/es/bigquery"},{"title":"Google Cloud SQL","href":"/docs/es/google-cloud-sql"},{"title":"Google Sheets","href":"/docs/es/google-sheets"},{"title":"Greenplum","href":"/docs/es/greenplum"},{"title":"HubSpot","href":"/docs/es/hubspot"},{"title":"Materialize","href":"/docs/es/materialize"},{"title":"Microsoft Fabric","href":"/docs/es/microsoft-fabric"},{"title":"Mixpanel","href":"/docs/es/mixpanel"},{"title":"MotherDuck","href":"/docs/es/motherduck"},{"title":"MySQL","href":"/docs/es/mysql"},{"title":"PostgreSQL","href":"/docs/es/postgresql"},{"title":"Pub/Sub","href":"/docs/es/google-pubsub"},{"title":"SingleStore","href":"/docs/es/singlestore"},{"title":"Snowflake","href":"/docs/es/snowflake"},{"title":"SQL Server","href":"/docs/es/sql-server"},{"title":"Starburst Enterprise","href":"/docs/es/starburst-enterprise"},{"title":"Starburst Galaxy","href":"/docs/es/starburst-galaxy"},{"title":"Trino","href":"/docs/es/trino"},{"title":"Segment (Twilio)","href":"/docs/es/segment-onesignal-integration"}]},{"group":"Atribución","pages":[{"title":"RevenueCat","href":"/docs/es/revenuecat"},{"title":"Adjust","href":"/docs/es/adjust"},{"title":"BlueConic","href":"/docs/es/blueconic"}]},{"title":"Construir una integración con OneSignal: Guía para socios","href":"/docs/es/building-an-integration-with-onesignal-partner-guide"}]}]},{"group":"Privacidad \u0026 Seguridad","pages":[{"group":"Credenciales de seguridad","pages":[{"title":"SOC 2 Type II","href":"/docs/es/soc-2-type-ii"},{"title":"ISO 27001","href":"/docs/es/iso27001"},{"title":"HIPAA","href":"/docs/es/hipaa"}]},{"group":"Privacidad de datos \u0026 cumplimiento regulatorio","pages":[{"title":"GDPR y Derechos Individuales","href":"/docs/es/gdpr-compliance"},{"title":"Marco de Privacidad de Datos UE-EE. UU.","href":"/docs/es/eu-us-data-privacy-framework"},{"title":"Cumplimiento normativo de correo electrónico","href":"/docs/es/email-compliance"},{"title":"Cumplimiento regulatorio de SMS","href":"/docs/es/sms-regulatory-compliance"},{"title":"Requisitos de privacidad de aplicaciones de Apple","href":"/docs/es/apple-app-privacy-requirements"},{"title":"Requisitos de seguridad de datos de Google Play","href":"/docs/es/google-play-data-safety-requirements"},{"title":"Preguntas frecuentes sobre recopilación de datos y seguridad","href":"/docs/es/data-questions"},{"title":"Datos recopilados por el SDK de OneSignal","href":"/docs/es/data-collected-by-the-onesignal-sdk"},{"title":"Manejo de datos personales","href":"/docs/es/handling-personal-data"}]},{"group":"Autenticación","pages":[{"title":"Autenticación de 2 pasos","href":"/docs/es/2-step-authentication"},{"title":"Inicio de sesión único (SSO)","href":"/docs/es/sso"}]}]}]},{"tab":"Guías del desarrollador","pages":[{"title":"Guías del desarrollador","href":"/docs/es/developers"}]},{"tab":"Tutoriales","pages":[{"title":"Tutoriales","href":"/docs/es/tutorials"}]},{"tab":"API Reference","pages":[{"title":"API Reference","href":"/reference/rest-api-overview"}]},{"tab":"Release Notes","pages":[{"title":"Release Notes","href":"/release-notes/changelog"}]}],"global":{"anchors":[{"anchor":"Blog","icon":"newspaper","href":"https://onesignal.com/blog"},{"anchor":"GitHub","icon":"github","href":"https://github.com/OneSignal"},{"anchor":"YouTube","icon":"youtube","href":"https://www.youtube.com/@onesignalofficial/playlists"}]}},{"language":"fr","pages":[{"title":"fr","href":"/docs/fr/voip-notifications"}]}]},"title":"Notificaciones push VoIP - OneSignal","buildId":"dpl_48qhjNLiu9iJQQSZJz9Fa2ihBbPH","deploymentId":"dpl_48qhjNLiu9iJQQSZJz9Fa2ihBbPH","dynamics":["07c022d89b","a74be98ba7"],"chunks":["Frame-a9VIxNFT.js","DynamicMarkdown-Cp6hhEk1.js","zoom-image-lightbox-DoivK0O3.js","lightbox-handle-r17bVUz3.js"]}