Envie notificações push VoIP no iOS usando o OneSignal com registro de token PushKit e um certificado VoIP, além de alternativas para Android para comportamento estilo chamada.
As notificações push VoIP permitem que seu aplicativo receba alertas de chamadas recebidas mesmo quando o aplicativo está em segundo plano ou encerrado. A Apple trata os pushs VoIP de forma diferente das notificações push padrão — eles usam um tipo de certificado separado, um token separado (via PushKit) e regras de entrega diferentes.O OneSignal oferece suporte ao envio de pushs VoIP, mas o SDK do OneSignal não gerencia o registro de tokens VoIP. Você é responsável por:
Registrar tokens VoIP em seu aplicativo usando o Apple PushKit
Criar um aplicativo OneSignal dedicado com um certificado VoIP Services
Registrar tokens e enviar pushs pela API REST do OneSignal
No iOS, as notificações VoIP usam o Apple PushKit e seguem regras especiais de entrega que diferem das notificações push padrão. Como a Apple trata os pushs VoIP de forma diferente, o OneSignal requer uma configuração de aplicativo separada para VoIP.
Antes de começar — estes são os erros mais comuns na configuração do VoIP:
Não criar um aplicativo OneSignal separado para VoIP. A Apple exige um tipo de certificado diferente para VoIP, portanto o OneSignal precisa de um aplicativo dedicado para enviar pushs VoIP. Seu aplicativo de push existente não pode ser usado para ambos.
Fazer upload do certificado errado. Você precisa de um Certificado VoIP Services (.p12), não do seu certificado APNs push padrão. Usar o errado causa falhas silenciosas de entrega.
Esquecer test_type no sandbox. Ao testar com uma compilação de desenvolvimento, você deve incluir "test_type": 1 ao registrar o token. Sem isso, a chamada da API tem sucesso, mas os pushs nunca chegam.
1
Registrar um token VoIP usando PushKit
Use o framework PushKit da Apple para se registrar para notificações VoIP e receber um token VoIP.
Implemente o PushKit em seu aplicativo
Armazene e atualize o token VoIP conforme a Apple o alterna
Siga atentamente as políticas de VoIP da Apple
Exemplo: implementação do delegate 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 é o código padrão do Apple PushKit. O OneSignal não fornece um SDK para PushKit — você registra o token você mesmo e o passa para o OneSignal na Etapa 4.
Os pushs VoIP do iOS requerem um tipo de certificado diferente das notificações push padrão. Um único aplicativo OneSignal pode usar apenas um tipo de certificado, portanto você deve criar dois aplicativos OneSignal separados:
Aplicativo Push Principal: Usa seu certificado APNs para notificações push padrão
Aplicativo Push VoIP: Usa um certificado VoIP Services para notificações exclusivamente VoIP
Ambos os aplicativos devem usar o mesmo bundle ID do iOS e estar associados ao mesmo aplicativo iOS nativo. Você não precisa inicializar o SDK do OneSignal duas vezes — o aplicativo VoIP é usado apenas no lado do servidor para enviar pushs VoIP via API.
O bundle ID (ex.: com.suaempresa.nomedoapp) é encontrado no Xcode na aba General do seu target.
3
Fazer upload de um certificado VoIP Services
No seu aplicativo VoIP do OneSignal, faça upload de um Certificado VoIP Services (.p12). Este é um tipo de certificado diferente do certificado APNs push padrão usado para notificações regulares.Para criar um:
Siga as instruções para gerar e baixar o certificado
Abra-o no Keychain Access e exporte-o como arquivo .p12
Faça upload do arquivo .p12 nas configurações de iOS do seu aplicativo VoIP do OneSignal
Não faça upload do seu certificado APNs push padrão no aplicativo VoIP. Se você usar o tipo de certificado errado, a API aceitará sua solicitação de push, mas a Apple a rejeitará e a notificação nunca chegará.
Certificado VoIP no Keychain Access
Certificado VoIP carregado no painel do OneSignal
4
Registrar o token VoIP com o OneSignal
Use a API Create User para registrar o token VoIP com seu aplicativo VoIP do OneSignal.
Compilações sandbox/desenvolvimento requerem "test_type": 1. Se você omitir este campo, a chamada da API tem sucesso e não retorna erro, mas a Apple trata o token como produção e rejeita silenciosamente todos os pushs enviados para ele.
Um token VoIP válido é uma string hexadecimal minúscula de 64 caracteres (ex.: a1b2c3d4e5f6...). O PushKit não funciona no Simulador do iOS — você deve usar um dispositivo real para obter um token válido.
O Android não oferece suporte a notificações push VoIP. Não há equivalente ao Apple PushKit.Em vez disso, os aplicativos de chamadas do Android simulam o comportamento VoIP usando:
Notificações push somente de dados
Serviços em primeiro plano
Interface de usuário personalizada estilo chamada
Você pode usar o suporte normal de push Android do OneSignal combinado com APIs nativas do Android para conseguir isso.Abordagem recomendada:
Enviar notificações somente de dados
Tratá-las em seu aplicativo para:
Iniciar um serviço em primeiro plano
Iniciar uma atividade de interface de chamada
Exibir uma notificação personalizada de chamada recebida
Se você deseja interceptar e controlar totalmente a renderização de notificações, use a Notification Service Extension do Android.Recursos úteis:
A configuração do Android não é específica do OneSignal. O OneSignal apenas entrega a carga do push; seu aplicativo lida com o comportamento da chamada.
Não. As Entregas Confirmadasnão são rastreadas para pushs VoIP. As Entregas Confirmadas dependem da Notification Service Extension, que não é acionada para notificações VoIP.Em vez disso, rastreie o recebimento por meio do evento nativo PushKit do iOS:
Este evento faz parte do target do seu aplicativo principal e não requer uma extensão separada. Consulte a documentação VoIP da Apple para mais detalhes.
Posso enviar notificações VoIP pelo painel do OneSignal?
Não. As notificações VoIP devem ser enviadas pela API Create Notification com "apns_push_type_override": "voip". O painel não oferece suporte a este parâmetro.
Por que meu push VoIP está falhando silenciosamente?
Os pushs VoIP podem falhar sem nenhum erro da API do OneSignal. Passe por esta lista de verificação:
Você está usando uma compilação sandbox/desenvolvimento? Você deve incluir "test_type": 1 ao registrar o token pela API Create User. Sem isso, o token é registrado como produção, a Apple rejeita o push e ele falha silenciosamente.
Você fez upload do certificado correto? O aplicativo VoIP do OneSignal deve usar um Certificado VoIP Services (.p12), não um certificado APNs push padrão. Ambos parecem semelhantes no Keychain Access — verifique se o nome do certificado começa com “VoIP Services”.
Você está enviando para o aplicativo OneSignal correto? O app_id na sua solicitação de envio deve ser o seu aplicativo VoIP, não o seu aplicativo de push principal. A REST API Key também deve vir do aplicativo VoIP.
O token VoIP é válido? Os tokens expiram quando o aplicativo é reinstalado ou o dispositivo é restaurado. Verifique se o token é uma string hexadecimal minúscula de 64 caracteres e foi registrado recentemente.
Seu aplicativo chama reportNewIncomingVoIPPushPayload? A partir do iOS 13, a Apple encerra aplicativos que recebem um push VoIP, mas não reportam uma chamada ao CallKit. Este é um requisito da Apple, não uma limitação do OneSignal.
Envie notificações push programaticamente usando a API REST.
Entregas confirmadas
Rastreie a confirmação de entrega de notificações push em plataformas compatíveis.
Extensões de serviço
Personalize o tratamento de notificações com Notification Service Extensions.
API Create User
Registre usuários e assinaturas com a API do OneSignal.
Esta página foi útil?
{"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":"6ae382c3b69b90fea4f269c5","collectionId":"05ee3a8d-0582-4682-bc3f-2bffa880b957","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae382c3b69b90fea4f269c5"},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae382c3b69b90fea4f269c5","clientVersion":"0.0.4021","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":"en","tag":"Developer Guides","count":47},{"language":"pt-BR","tag":"Guia de desenvolvedor","count":47},{"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":"en","tag":"Mobile SDKs","count":26},{"language":"cn","tag":"移动SDK","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":"Mobile SDK setup","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":"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":"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":"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":"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/pt-BR/voip-notifications","slug":"/docs/pt-BR/voip-notifications","pageMetadata":{"title":"Notificações push VoIP","description":"Envie notificações push VoIP no iOS usando o OneSignal com registro de token PushKit e um certificado VoIP, além de alternativas para Android para comportamento estilo chamada.","keywords":["VoIP push notifications","iOS VoIP","PushKit","VoIP token","VoIP Services Certificate","android call notification"],"href":"/docs/pt-BR/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: \"Envie notificações push VoIP no iOS usando o OneSignal com registro de token PushKit e um certificado VoIP, além de alternativas para Android para comportamento estilo chamada.\"\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:`As notificações push VoIP permitem que seu aplicativo receba alertas de chamadas recebidas mesmo quando o aplicativo está em segundo plano ou encerrado. A Apple trata os pushs VoIP de forma diferente das notificações push padrão — eles usam um tipo de certificado separado, um token separado (via PushKit) e regras de entrega diferentes.`}),`\n`,_jsxs(_components.p,{children:[`O OneSignal oferece suporte ao `,_jsx(_components.strong,{children:`envio`}),` de pushs VoIP, mas o SDK do OneSignal `,_jsx(_components.strong,{children:`não`}),` gerencia o registro de tokens VoIP. Você é responsável por:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Registrar tokens VoIP em seu aplicativo usando o Apple PushKit`}),`\n`,_jsx(_components.li,{children:`Criar um aplicativo OneSignal dedicado com um certificado VoIP Services`}),`\n`,_jsx(_components.li,{children:`Registrar tokens e enviar pushs pela API REST do OneSignal`}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`diferenças-de-plataforma`,children:`Diferenças 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 suportado?`}),_jsx(_components.th,{children:`Como 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 e um 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 pushs somente de dados para simular comportamento de chamada`})]})]})]}),`\n`,_jsx(_components.p,{children:`Se você está criando um aplicativo de chamadas multiplataforma, usará abordagens diferentes por plataforma.`}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`ios-enviar-notificações-push-voip`,children:`iOS: enviar notificações push VoIP`}),`\n`,_jsx(_components.p,{children:`No iOS, as notificações VoIP usam o Apple PushKit e seguem regras especiais de entrega que diferem das notificações push padrão. Como a Apple trata os pushs VoIP de forma diferente, o OneSignal requer uma configuração de aplicativo separada para VoIP.`}),`\n`,_jsxs(Warning,{children:[_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Antes de começar`}),` — estes são os erros mais comuns na configuração do VoIP:`]}),_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Não criar um aplicativo OneSignal separado para VoIP.`}),` A Apple exige um tipo de certificado diferente para VoIP, portanto o OneSignal precisa de um aplicativo dedicado para enviar pushs VoIP. Seu aplicativo de push existente não pode ser usado para ambos.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Fazer upload do certificado errado.`}),` Você precisa de um `,_jsx(_components.strong,{children:`Certificado VoIP Services (.p12)`}),`, não do seu certificado APNs push padrão. Usar o errado causa falhas silenciosas de entrega.`]}),`\n`,_jsxs(_components.li,{children:[_jsxs(_components.strong,{children:[`Esquecer `,_jsx(_components.code,{children:`test_type`}),` no sandbox.`]}),` Ao testar com uma compilação de desenvolvimento, você deve incluir `,_jsx(_components.code,{children:`\"test_type\": 1`}),` ao registrar o token. Sem isso, a chamada da API tem sucesso, mas os pushs nunca chegam.`]}),`\n`]})]}),`\n`,_jsxs(Steps,{children:[_jsxs(Step,{title:`Registrar um token VoIP usando PushKit`,children:[_jsx(_components.p,{children:`Use o framework PushKit da Apple para se registrar para notificações VoIP e receber um token VoIP.`}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Implemente o PushKit em seu aplicativo`}),`\n`,_jsx(_components.li,{children:`Armazene e atualize o token VoIP conforme a Apple o alterna`}),`\n`,_jsx(_components.li,{children:`Siga atentamente as políticas de VoIP da Apple`}),`\n`]}),_jsxs(Accordion,{title:`Exemplo: implementação do delegate PushKit`,id:`exemplo-implementacao-do-delegate-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 é o código padrão do Apple PushKit. O OneSignal não fornece um SDK para PushKit — você registra o token você mesmo e o passa para o OneSignal na Etapa 4.`})]}),_jsx(_components.p,{children:`Recursos da Apple:`}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`https://developer.apple.com/documentation/pushkit`,children:`Documentação do PushKit`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`https://developer.apple.com/documentation/pushkit/responding_to_voip_notifications_from_pushkit`,children:`Respondendo a pushs VoIP`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`https://developer.apple.com/library/content/documentation/Performance/Conceptual/EnergyGuide-iOS/OptimizeVoIP.html`,children:`Melhores práticas de VoIP da Apple`})}),`\n`]})]}),_jsxs(Step,{title:`Criar um aplicativo OneSignal separado para VoIP`,children:[_jsxs(_components.p,{children:[`Os pushs VoIP do iOS requerem um tipo de certificado diferente das notificações push padrão. Um único aplicativo OneSignal pode usar apenas um tipo de certificado, portanto você deve criar `,_jsx(_components.strong,{children:`dois aplicativos OneSignal separados`}),`:`]}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Aplicativo Push Principal`}),`: Usa seu certificado APNs para notificações push padrão`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Aplicativo Push VoIP`}),`: Usa um certificado VoIP Services para notificações exclusivamente VoIP`]}),`\n`]}),_jsxs(_components.p,{children:[`Ambos os aplicativos devem usar o mesmo bundle ID do iOS e estar associados ao mesmo aplicativo iOS nativo. Você `,_jsx(_components.strong,{children:`não`}),` precisa inicializar o SDK do OneSignal duas vezes — o aplicativo VoIP é usado apenas no lado do servidor para enviar pushs VoIP via API.`]}),_jsxs(Note,{children:[`O bundle ID (ex.: `,_jsx(_components.code,{children:`com.suaempresa.nomedoapp`}),`) é encontrado no Xcode na aba `,_jsx(_components.strong,{children:`General`}),` do seu target.`]})]}),_jsxs(Step,{title:`Fazer upload de um certificado VoIP Services`,children:[_jsxs(_components.p,{children:[`No seu aplicativo VoIP do OneSignal, faça upload de um `,_jsx(_components.strong,{children:`Certificado VoIP Services (.p12)`}),`. Este é um tipo de certificado diferente do certificado APNs push padrão usado para notificações regulares.`]}),_jsx(_components.p,{children:`Para criar um:`}),_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Acesse o `,_jsx(_components.a,{href:`https://developer.apple.com/account/resources/certificates/add`,children:`Portal do Desenvolvedor Apple`})]}),`\n`,_jsxs(_components.li,{children:[`Selecione `,_jsx(_components.strong,{children:`VoIP Services Certificate`})]}),`\n`,_jsx(_components.li,{children:`Siga as instruções para gerar e baixar o certificado`}),`\n`,_jsxs(_components.li,{children:[`Abra-o no Keychain Access e exporte-o como arquivo `,_jsx(_components.code,{children:`.p12`})]}),`\n`,_jsxs(_components.li,{children:[`Faça upload do arquivo `,_jsx(_components.code,{children:`.p12`}),` nas configurações de iOS do seu aplicativo VoIP do OneSignal`]}),`\n`]}),_jsx(Warning,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Não`}),` faça upload do seu certificado APNs push padrão no aplicativo VoIP. Se você usar o tipo de certificado errado, a API aceitará sua solicitação de push, mas a Apple a rejeitará e a notificação nunca chegará.`]})}),_jsx(Frame,{caption:`Certificado VoIP no Keychain Access`,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 VoIP Services exibido no Keychain Access do 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 carregado no painel do 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 VoIP Services carregado no painel do 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 o token VoIP com o OneSignal`,children:[_jsxs(_components.p,{children:[`Use a API `,_jsx(_components.a,{href:`/reference/create-user`,children:`Create User`}),` para registrar o token VoIP com seu aplicativo VoIP do OneSignal.`]}),_jsx(Warning,{children:_jsxs(_components.p,{children:[_jsxs(_components.strong,{children:[`Compilações sandbox/desenvolvimento requerem `,_jsx(_components.code,{children:`\"test_type\": 1`}),`.`]}),` Se você omitir este campo, a chamada da API tem sucesso e não retorna erro, mas a Apple trata o token como produção e rejeita silenciosamente todos os pushs enviados para ele.`]})}),_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:[`Um token VoIP válido é uma string hexadecimal minúscula de 64 caracteres (ex.: `,_jsx(_components.code,{children:`a1b2c3d4e5f6...`}),`). O PushKit não funciona no Simulador do iOS — você deve usar um dispositivo real para obter um token válido.`]}),_jsxs(_components.p,{children:[`Para atualizar o token posteriormente, use a API `,_jsx(_components.a,{href:`/reference/update-subscription`,children:`Update Subscription`}),`.`]})]}),_jsxs(Step,{title:`Enviar notificações VoIP`,children:[_jsxs(_components.p,{children:[`Use a API `,_jsx(_components.a,{href:`/reference/create-message`,children:`Create Notification`}),` com os seguintes parâmetros:`]}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`\"apns_push_type_override\": \"voip\"`}),` — informa à Apple que este é um push VoIP`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`app_id`}),` — o ID do seu aplicativo VoIP`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`include_subscription_ids`}),` — o ID de assinatura VoIP que você registrou`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`contents`}),` ou `,_jsx(_components.code,{children:`content_available`}),` é obrigatório`]}),`\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 sua configuração VoIP`,children:[_jsx(_components.p,{children:`Sua integração VoIP do iOS está funcionando corretamente se:`}),_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`O token VoIP aparece como uma assinatura de push do iOS no seu `,_jsx(_components.strong,{children:`aplicativo VoIP`})]}),`\n`,_jsxs(_components.li,{children:[`Um push VoIP aciona `,_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:)`})}),` em seu aplicativo`]}),`\n`,_jsx(_components.li,{children:`O aplicativo desperta mesmo quando está encerrado ou em segundo plano`}),`\n`]})]})]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`android-simular-comportamento-estilo-voip`,children:`Android: simular comportamento estilo VoIP`}),`\n`,_jsx(_components.p,{children:`O Android não oferece suporte a notificações push VoIP. Não há equivalente ao Apple PushKit.`}),`\n`,_jsx(_components.p,{children:`Em vez disso, os aplicativos de chamadas do Android simulam o comportamento VoIP usando:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Notificações push somente de dados`}),`\n`,_jsx(_components.li,{children:`Serviços em primeiro plano`}),`\n`,_jsx(_components.li,{children:`Interface de usuário personalizada estilo chamada`}),`\n`]}),`\n`,_jsx(_components.p,{children:`Você pode usar o suporte normal de push Android do OneSignal combinado com APIs nativas do Android para conseguir isso.`}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Abordagem recomendada:`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Enviar notificações somente de dados`}),`\n`,_jsxs(_components.li,{children:[`Tratá-las em seu aplicativo para:`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Iniciar um serviço em primeiro plano`}),`\n`,_jsx(_components.li,{children:`Iniciar uma atividade de interface de chamada`}),`\n`,_jsx(_components.li,{children:`Exibir uma notificação personalizada de chamada recebida`}),`\n`]}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`Se você deseja interceptar e controlar totalmente a renderização de notificações, use a `,_jsx(_components.a,{href:`/docs/pt-BR/service-extensions#notification-service-extension`,children:`Notification Service Extension`}),` do Android.`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Recursos úteis:`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`https://developer.android.com/guide/topics/connectivity/telecom/selfManaged`,children:`Guia de aplicativo de chamadas do 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:`Exemplo de interface de chamada recebida`})}),`\n`]}),`\n`,_jsxs(Info,{children:[`A configuração do Android `,_jsx(_components.strong,{children:`não é específica do OneSignal`}),`. O OneSignal apenas entrega a carga do push; seu aplicativo lida com o comportamento da chamada.`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`perguntas-frequentes`,children:`Perguntas frequentes`}),`\n`,_jsx(Heading,{level:`3`,id:`as-entregas-confirmadas-funcionam-com-voip`,children:`As entregas confirmadas funcionam com VoIP?`}),`\n`,_jsxs(_components.p,{children:[`Não. As `,_jsx(_components.a,{href:`/docs/pt-BR/confirmed-delivery`,children:`Entregas Confirmadas`}),` `,_jsx(_components.strong,{children:`não são rastreadas`}),` para pushs VoIP. As Entregas Confirmadas dependem da Notification Service Extension, que não é acionada para notificações VoIP.`]}),`\n`,_jsx(_components.p,{children:`Em vez disso, rastreie o recebimento por meio do evento nativo PushKit do 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 faz parte do target do seu aplicativo principal e não requer uma extensão separada. Consulte a `,_jsx(_components.a,{href:`https://developer.apple.com/documentation/pushkit/responding_to_voip_notifications_from_pushkit#3377587`,children:`documentação VoIP da Apple`}),` para mais detalhes.`]}),`\n`,_jsx(Heading,{level:`3`,id:`posso-enviar-notificações-voip-pelo-painel-do-onesignal`,children:`Posso enviar notificações VoIP pelo painel do OneSignal?`}),`\n`,_jsxs(_components.p,{children:[`Não. As notificações VoIP devem ser enviadas pela API `,_jsx(_components.a,{href:`/reference/create-message`,children:`Create Notification`}),` com `,_jsx(_components.code,{children:`\"apns_push_type_override\": \"voip\"`}),`. O painel não oferece suporte a este parâmetro.`]}),`\n`,_jsx(Heading,{level:`3`,id:`por-que-meu-push-voip-está-falhando-silenciosamente`,children:`Por que meu push VoIP está falhando silenciosamente?`}),`\n`,_jsx(_components.p,{children:`Os pushs VoIP podem falhar sem nenhum erro da API do OneSignal. Passe por esta lista de verificação:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Você está usando uma compilação sandbox/desenvolvimento?`}),` Você deve incluir `,_jsx(_components.code,{children:`\"test_type\": 1`}),` ao registrar o token pela API Create User. Sem isso, o token é registrado como produção, a Apple rejeita o push e ele falha silenciosamente.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Você fez upload do certificado correto?`}),` O aplicativo VoIP do OneSignal deve usar um `,_jsx(_components.strong,{children:`Certificado VoIP Services (.p12)`}),`, não um certificado APNs push padrão. Ambos parecem semelhantes no Keychain Access — verifique se o nome do certificado começa com “VoIP Services”.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Você está enviando para o aplicativo OneSignal correto?`}),` O `,_jsx(_components.code,{children:`app_id`}),` na sua solicitação de envio deve ser o seu `,_jsx(_components.strong,{children:`aplicativo VoIP`}),`, não o seu aplicativo de push principal. A `,_jsx(_components.code,{children:`REST API Key`}),` também deve vir do aplicativo VoIP.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`O token VoIP é válido?`}),` Os tokens expiram quando o aplicativo é reinstalado ou o dispositivo é restaurado. Verifique se o token é uma string hexadecimal minúscula de 64 caracteres e foi registrado recentemente.`]}),`\n`,_jsxs(_components.li,{children:[_jsxs(_components.strong,{children:[`Seu aplicativo chama `,_jsx(_components.code,{children:`reportNewIncomingVoIPPushPayload`}),`?`]}),` A partir do iOS 13, a Apple `,_jsx(_components.strong,{children:`encerra`}),` aplicativos que recebem um push VoIP, mas não reportam uma chamada ao CallKit. Este é um requisito da Apple, não uma limitação do 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 Create message`,icon:`code`,href:`/reference/create-message`,children:_jsx(_components.p,{children:`Envie notificações push programaticamente usando a API REST.`})}),_jsx(Card,{title:`Entregas confirmadas`,icon:`circle-check`,href:`/docs/pt-BR/confirmed-delivery`,children:_jsx(_components.p,{children:`Rastreie a confirmação de entrega de notificações push em plataformas compatíveis.`})}),_jsx(Card,{title:`Extensões de serviço`,icon:`puzzle-piece`,href:`/docs/pt-BR/service-extensions`,children:_jsx(_components.p,{children:`Personalize o tratamento de notificações com Notification Service Extensions.`})}),_jsx(Card,{title:`API Create User`,icon:`user-plus`,href:`/reference/create-user`,children:_jsx(_components.p,{children:`Registre usuários e assinaturas com a API do 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":"Notificações push VoIP","description":"Envie notificações push VoIP no iOS usando o OneSignal com registro de token PushKit e um certificado VoIP, além de alternativas para Android para comportamento estilo chamada.","keywords":["VoIP push notifications","iOS VoIP","PushKit","VoIP token","VoIP Services Certificate","android call notification"],"href":"/docs/pt-BR/voip-notifications"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Diferenças de plataforma","slug":"diferenças-de-plataforma","depth":3,"children":[]},{"title":"iOS: enviar notificações push VoIP","slug":"ios-enviar-notificações-push-voip","depth":2,"children":[]},{"title":"Android: simular comportamento estilo VoIP","slug":"android-simular-comportamento-estilo-voip","depth":2,"children":[]},{"title":"Perguntas frequentes","slug":"perguntas-frequentes","depth":2,"children":[{"title":"As entregas confirmadas funcionam com VoIP?","slug":"as-entregas-confirmadas-funcionam-com-voip","depth":3,"children":[]},{"title":"Posso enviar notificações VoIP pelo painel do OneSignal?","slug":"posso-enviar-notificações-voip-pelo-painel-do-onesignal","depth":3,"children":[]},{"title":"Por que meu push VoIP está falhando silenciosamente?","slug":"por-que-meu-push-voip-está-falhando-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":"Notificações 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":0},"es":{"href":"/docs/es/voip-notifications","matchLevel":1},"fr":{"href":"/docs/fr/voip-notifications","matchLevel":1}}},"lastModified":"2026-03-13T20:50:06.789Z","originalFileLocation":"docs/pt-BR/voip-notifications.mdx","locale":"pt-BR"},"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=\"Envie notificações push VoIP no iOS usando o OneSignal com registro de token PushKit e um certificado VoIP, além de alternativas para Android para comportamento estilo chamada.\">\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=\"Notificações push VoIP - OneSignal\">\u003cmeta data-mint-head property=\"og:description\" content=\"Envie notificações push VoIP no iOS usando o OneSignal com registro de token PushKit e um certificado VoIP, além de alternativas para Android para comportamento estilo chamada.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"OneSignal\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://documentation.onesignal.com/docs/pt-BR/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%B3vel\u0026amp;title=Notifica%C3%A7%C3%B5es+push+VoIP\u0026amp;description=Envie+notifica%C3%A7%C3%B5es+push+VoIP+no+iOS+usando+o+OneSignal+com+registro+de+token+PushKit+e+um+certificado+VoIP%2C+al%C3%A9m+de+alternativas+para+Android+para+comportamento\u0026amp;theme=8d648f04f85028b307bd669b\u0026amp;signature=4851ec39b5b9b5f0f961e38ec9e05972a19e7ced0b20215373e8e77d418b688a\">\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=\"Notificações push VoIP - OneSignal\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Envie notificações push VoIP no iOS usando o OneSignal com registro de token PushKit e um certificado VoIP, além de alternativas para Android para comportamento estilo chamada.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://onesignal.mintlify.app/_mintlify/api/og/v2?division=Push+m%C3%B3vel\u0026amp;title=Notifica%C3%A7%C3%B5es+push+VoIP\u0026amp;description=Envie+notifica%C3%A7%C3%B5es+push+VoIP+no+iOS+usando+o+OneSignal+com+registro+de+token+PushKit+e+um+certificado+VoIP%2C+al%C3%A9m+de+alternativas+para+Android+para+comportamento\u0026amp;theme=8d648f04f85028b307bd669b\u0026amp;signature=4851ec39b5b9b5f0f961e38ec9e05972a19e7ced0b20215373e8e77d418b688a\">\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/pt-BR/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/pt-BR/voip-notifications.md\">\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=\"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=\"es\" href=\"https://documentation.onesignal.com/docs/es/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/pt-BR/voip-notifications#webpage\",\"url\":\"https://documentation.onesignal.com/docs/pt-BR/voip-notifications\",\"name\":\"Notificações push VoIP\",\"description\":\"Envie notificações push VoIP no iOS usando o OneSignal com registro de token PushKit e um certificado VoIP, além de alternativas para Android para comportamento estilo chamada.\",\"dateModified\":\"2026-03-13T20:50:06.789Z\",\"isPartOf\":{\"@id\":\"https://documentation.onesignal.com#website\"},\"breadcrumb\":{\"@id\":\"https://documentation.onesignal.com/docs/pt-BR/voip-notifications#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://documentation.onesignal.com/docs/pt-BR/voip-notifications#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Canais de mensagem\",\"item\":\"https://documentation.onesignal.com/docs/pt-BR/channel-setup\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Push notificações\",\"item\":\"https://documentation.onesignal.com/docs/pt-BR/push\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Push móvel\",\"item\":\"https://documentation.onesignal.com/docs/pt-BR/mobile-push-setup\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Notificações push VoIP\",\"item\":\"https://documentation.onesignal.com/docs/pt-BR/voip-notifications\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://documentation.onesignal.com/docs/pt-BR/voip-notifications#article\",\"headline\":\"Notificações push VoIP\",\"name\":\"Notificações push VoIP\",\"description\":\"Envie notificações push VoIP no iOS usando o OneSignal com registro de token PushKit e um certificado VoIP, além de alternativas para Android para comportamento estilo chamada.\",\"url\":\"https://documentation.onesignal.com/docs/pt-BR/voip-notifications\",\"mainEntityOfPage\":{\"@id\":\"https://documentation.onesignal.com/docs/pt-BR/voip-notifications#webpage\"},\"dateModified\":\"2026-03-13T20:50:06.789Z\",\"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","tabs":[{"tab":"Início","pages":[{"title":"Início","href":"/docs/pt-BR/home"}]},{"tab":"Guia do Usuário","groups":[{"group":"Primeiros passos \u0026 configurações","pages":[{"title":"Guia de início rápido","href":"/docs/pt-BR/quickstart-guide"},{"group":"Painel do OneSignal","pages":[{"title":"Aplicativos, Organizações e Contas","href":"/docs/pt-BR/apps-organizations"},{"title":"Membros da equipe","href":"/docs/pt-BR/manage-team-members"},{"title":"Keys \u0026 IDs","href":"/docs/pt-BR/keys-and-ids"},{"title":"Registros de Auditoria","href":"/docs/pt-BR/audit-logs"},{"title":"Uso e faturamento","href":"/docs/pt-BR/billing-faq"},{"title":"Aplicativos e organizações desativados","href":"/docs/pt-BR/disabled-apps"}]},{"title":"Migrando para o OneSignal","href":"/docs/pt-BR/migrating-to-onesignal"}]},{"group":"Canais de mensagem","pages":[{"title":"Configuração de canais","href":"/docs/pt-BR/channel-setup"},{"group":"Push notificações","pages":[{"title":"Visão geral do Push","href":"/docs/pt-BR/push"},{"group":"Push móvel","pages":[{"title":"Configuração de push mobile","href":"/docs/pt-BR/mobile-push-setup"},{"title":"Solicitar permissões push","href":"/docs/pt-BR/prompt-for-push-permissions"},{"title":"iOS: Notificações push provisórias","href":"/docs/pt-BR/ios-provisional-push-notifications"},{"title":"Categorias de notificação Android","href":"/docs/pt-BR/android-notification-categories"},{"title":"Notificações de dados e em segundo plano","description":"Envie notificações push silenciosas para sincronizar dados ou acionar tarefas em segundo plano no iOS e Android sem exibir uma mensagem visível.","href":"/docs/pt-BR/data-notifications"},{"title":"Notificações push VoIP","href":"/docs/pt-BR/voip-notifications"}]},{"group":"Web push","pages":[{"title":"Configuração de web push","description":"Configure notificações web push com OneSignal para reengajar usuários no Chrome, Firefox, Safari e Edge. Configure seu site, prompts e service worker.","href":"/docs/pt-BR/web-push-setup"},{"title":"Prompts de permissão web","href":"/docs/pt-BR/permission-requests"},{"title":"FAQ de web push","href":"/docs/pt-BR/web-push-setup-faq"},{"title":"Comportamento de navegador para web push","href":"/docs/pt-BR/browser-behavior-and-unsubscribes"},{"title":"Plugin OneSignal para WordPress e push web","href":"/docs/pt-BR/wordpress"},{"title":"Solução de problemas do WordPress","href":"/docs/pt-BR/troubleshooting-wordpress-web-push"},{"title":"Integração do Shopify para push web","href":"/docs/pt-BR/shopify"}]},{"group":"Funcionalidades de Push","pages":[{"title":"Ícones de notificação","href":"/docs/pt-BR/notification-icons"},{"title":"Imagens de notificação e rich media","href":"/docs/pt-BR/rich-media"},{"title":"Sons de notificação","href":"/docs/pt-BR/notification-sounds"},{"title":"Contagens de badge no ícone do aplicativo","href":"/docs/pt-BR/badges"},{"title":"Botões de ação para notificações push","href":"/docs/pt-BR/action-buttons"},{"title":"Limitação de frequência de push","href":"/docs/pt-BR/frequency-capping"},{"title":"Push throttling","href":"/docs/pt-BR/throttling"},{"title":"iOS: Modos de foco e níveis de interrupção","href":"/docs/pt-BR/ios-focus-modes-and-interruption-levels"},{"title":"iOS: Relevance score","href":"/docs/pt-BR/ios-relevance-score"}]},{"group":"Analytics \u0026 troubleshooting de Push","pages":[{"title":"Relatórios de mensagens push","href":"/docs/pt-BR/push-notification-message-reports"},{"title":"Entrega confirmada","href":"/docs/pt-BR/confirmed-delivery"},{"title":"CTR de Notificação","href":"/docs/pt-BR/notification-ctr"},{"title":"Mobile push: Notificações não exibidas ou atrasadas","href":"/docs/pt-BR/notifications-show-successful-but-are-not-being-shown"},{"title":"Push web: Notificações não exibidas","href":"/docs/pt-BR/notifications-not-shown-web-push"},{"title":"Imagens de Notificação Não Aparecem","href":"/docs/pt-BR/notification-images-not-showing"},{"title":"Notificações Duplicadas","href":"/docs/pt-BR/duplicated-notifications"},{"title":"FAQ de Token Expirado FCM","href":"/docs/pt-BR/fcm-expired-token-faq"}]}]},{"group":"Mensagens em aplicativo","pages":[{"title":"Visão geral de mensagens no aplicativo","href":"/docs/pt-BR/in-app-messages-setup"},{"title":"Gatilhos de mensagens no aplicativo","href":"/docs/pt-BR/iam-triggers"},{"title":"Ações de clique em mensagens no aplicativo","href":"/docs/pt-BR/iam-click-actions"},{"group":"Design de mensagens em aplicativo","pages":[{"title":"Criar mensagens in-app com drag-and-drop","href":"/docs/pt-BR/design-your-in-app-message"},{"title":"Criar mensagens in-app com HTML","href":"/docs/pt-BR/design-your-in-app-message-with-html"},{"title":"Templates e quickstarts de mensagens no aplicativo","href":"/docs/pt-BR/in-app-html-templates"},{"title":"Referência da API JavaScript de mensagens no aplicativo","href":"/docs/pt-BR/in-app-message-api"}]},{"title":"Relatórios de mensagens no aplicativo","href":"/docs/pt-BR/in-app-message-reports"},{"title":"Solução de problemas de mensagens no aplicativo","href":"/docs/pt-BR/in-app-message-troubleshooting"}]},{"group":"Email mensagens","pages":[{"title":"Visão geral de Email","href":"/docs/pt-BR/email-messaging"},{"group":"Configuração de email","pages":[{"title":"Configuração de email","href":"/docs/pt-BR/email-setup"},{"title":"Configuração de DNS de email","href":"/docs/pt-BR/email-dns-configuration"},{"title":"Remetentes","href":"/docs/pt-BR/senders"},{"title":"Emails transacionais","href":"/docs/pt-BR/setup-transactional-emails"},{"title":"Criar uma página de cancelamento de assinatura de email personalizada","href":"/docs/pt-BR/create-custom-unsubscribe-page"}]},{"group":"Entregabilidade de email","pages":[{"title":"Relatórios de mensagens de email","href":"/docs/pt-BR/email-message-reports"},{"title":"Entregabilidade de email","href":"/docs/pt-BR/email-deliverability"},{"title":"Melhores práticas de reputação de email","href":"/docs/pt-BR/email-reputation-best-practices"},{"title":"Validação de endereço de email","href":"/docs/pt-BR/email-address-validation"},{"title":"Guia de aquecimento de email","href":"/docs/pt-BR/email-warm-up"},{"title":"Google Postmaster Tools","href":"/docs/pt-BR/google-postmaster-tools"},{"title":"Supressões","href":"/docs/pt-BR/suppressions"},{"title":"Solução de problemas de email","href":"/docs/pt-BR/email-troubleshooting"}]},{"group":"Mensagens de email","pages":[{"title":"Criar emails com arrastar e soltar","href":"/docs/pt-BR/design-emails-with-drag-and-drop"},{"title":"Criar emails com HTML","href":"/docs/pt-BR/design-emails-with-html"},{"title":"Links de cancelamento de inscrição e cabeçalhos de email","href":"/docs/pt-BR/unsubscribe-links-email-subscriptions"},{"title":"Encaminhamento de modelo de email","href":"/docs/pt-BR/email-template-forwarding"}]}]},{"group":"SMS \u0026 RCS mensagens","pages":[{"title":"Visão geral de SMS, MMS e RCS","href":"/docs/pt-BR/sms-messaging"},{"title":"Rich Communication Services (RCS)","href":"/docs/pt-BR/rcs-messaging"},{"group":"Configuração de SMS","pages":[{"title":"Configuração de SMS","href":"/docs/pt-BR/sms-setup"},{"title":"Solicitações de recursos de remetente e requisitos por país","sidebarTitle":"Solicitações de recursos de remetente","href":"/docs/pt-BR/sms-registration-requirements"},{"title":"Opt-in e coleta de SMS","href":"/docs/pt-BR/sms-opt-in-and-collection"},{"title":"Gerenciamento de palavras-chave de consentimento SMS","href":"/docs/pt-BR/sms-consent-keyword-management"},{"title":"Palavras-chave SMS","href":"/docs/pt-BR/keywords"}]},{"group":"Mensagens de SMS","pages":[{"title":"Relatórios de mensagens SMS","href":"/docs/pt-BR/sms-message-reports"},{"title":"Senhas de uso único (OTP)","sidebarTitle":"Senhas de uso único","href":"/docs/pt-BR/sms-verify"}]}]},{"group":"Atividades ao Vivo","pages":[{"title":"Live Activities","href":"/docs/pt-BR/live-activities"},{"title":"Análise de Live Activities","href":"/docs/pt-BR/live-activities-analytics"}]},{"group":"Funcionalidades","pages":[{"title":"Testes A/B","href":"/docs/pt-BR/ab-testing"},{"title":"Mensagens em múltiplos idiomas","href":"/docs/pt-BR/multi-language-messaging"},{"group":"Personalização","pages":[{"title":"Personalização","href":"/docs/pt-BR/message-personalization"},{"title":"Usando sintaxe Liquid","href":"/docs/pt-BR/using-liquid-syntax"},{"title":"Data feeds","href":"/docs/pt-BR/data-feeds"},{"title":"Personalize com Custom Events","href":"/docs/pt-BR/personalization-custom-event"},{"title":"Personalizar com propriedades","href":"/docs/pt-BR/personalization-properties-and-tags"},{"title":"Personalize mensagens com custom_data da API","href":"/docs/pt-BR/personalization-api-custom-data"},{"title":"Conteúdo Dinâmico com CSV","href":"/docs/pt-BR/dynamic-content"}]},{"group":"URLs, Links e Deep Links","pages":[{"title":"URLs, links e deep links","href":"/docs/pt-BR/links"},{"title":"Deep Linking","href":"/docs/pt-BR/deep-linking"},{"title":"Links de cancelamento de inscrição e cabeçalhos de email","href":"/docs/pt-BR/unsubscribe-links-email-subscriptions"}]},{"title":"Mensagens de Retargeting","href":"/docs/pt-BR/retargeting"},{"title":"Templates","href":"/docs/pt-BR/templates"},{"title":"Etiquetas","href":"/docs/pt-BR/labels"}]}]},{"group":"Jornadas","pages":[{"title":"Visão geral de Journeys","href":"/docs/pt-BR/journeys-overview"},{"group":"Funcionalidades de Jornada","pages":[{"title":"Configurações do Journey","href":"/docs/pt-BR/journeys-settings"},{"title":"Mensagens de Journey","href":"/docs/pt-BR/journeys-messages"},{"title":"Ações de Journey","href":"/docs/pt-BR/journeys-actions"},{"title":"Webhooks de Journey","href":"/docs/pt-BR/journeys-webhook"},{"title":"Enviar Mensagens do WhatsApp via Webhooks de Journey","href":"/docs/pt-BR/sending-whatsapp-messages-via-journey-webhooks"},{"title":"Gerenciando Journeys","href":"/docs/pt-BR/managing-journeys"},{"title":"Análise de Journey","href":"/docs/pt-BR/journeys-analytics"}]},{"title":"Exemplos de Journey","href":"/docs/pt-BR/journeys-examples"}]},{"group":"Público \u0026 eventos personalizados","pages":[{"title":"Segmentos","href":"/docs/pt-BR/segmentation"},{"group":"Usuários \u0026 Assinaturas","pages":[{"title":"Users","href":"/docs/pt-BR/users"},{"title":"Assinaturas","href":"/docs/pt-BR/subscriptions"},{"title":"Aliases","href":"/docs/pt-BR/aliases"},{"title":"Usuários de teste","href":"/docs/pt-BR/test-users"},{"title":"Excluir usuários","href":"/docs/pt-BR/delete-users"}]},{"group":"Eventos personalizados","pages":[{"title":"Eventos personalizados","href":"/docs/pt-BR/custom-events"},{"title":"Armazenamento e retenção de eventos personalizados","href":"/docs/pt-BR/custom-event-storage"}]},{"group":"Tags","pages":[{"title":"Tags","href":"/docs/pt-BR/add-user-data-tags"},{"title":"Operadores de Tempo","href":"/docs/pt-BR/time-operators"}]},{"title":"Importar","href":"/docs/pt-BR/import"}]},{"group":"Análises \u0026 Integrações","pages":[{"group":"Análises","pages":[{"title":"Visão geral de análises","href":"/docs/pt-BR/analytics-overview"},{"title":"Metas","sidebarTitle":"Metas","href":"/docs/pt-BR/goals"},{"title":"Template analytics","href":"/docs/pt-BR/template-analytics"},{"title":"Exportando dados","href":"/docs/pt-BR/exporting-data"},{"title":"Custom Outcomes","href":"/docs/pt-BR/custom-outcomes"},{"title":"Métricas de conversão","href":"/docs/pt-BR/conversion-metrics"},{"title":"Tendências de engajamento","href":"/docs/pt-BR/engagement-analytics"},{"title":"Tendências de assinaturas","href":"/docs/pt-BR/subscription-trends"},{"group":"Métricas de retenção","pages":[{"title":"Métricas de retenção","href":"/docs/pt-BR/retention-metrics"},{"title":"Interpretando curvas de retenção","href":"/docs/pt-BR/interpreting-retention-curves"}]},{"title":"Glossário de Métricas","href":"/docs/pt-BR/analytics-metrics-glossary"}]},{"group":"Eventos de Fluxo","pages":[{"title":"Event Streams","href":"/docs/pt-BR/event-streams"},{"title":"Referência de dados do Event Stream","sidebarTitle":"Dados do Event Stream","href":"/docs/pt-BR/event-streams-data"},{"title":"Event streams de mensagens no aplicativo","href":"/docs/pt-BR/iam-event-streams"},{"title":"Integração do Google Sheets com Event Streams","href":"/docs/pt-BR/google-sheets-integration-with-event-streams"}]},{"group":"Integrações","pages":[{"title":"Visão geral de integrações","href":"/docs/pt-BR/integrations"},{"title":"Integração de data warehouse, DMP e CRM","href":"/docs/pt-BR/database-dmp-crm-integration"},{"group":"OneSignal como fonte de dados","pages":[{"title":"Amplitude","href":"/docs/pt-BR/amplitude"},{"title":"Databricks","href":"/docs/pt-BR/databricks"},{"title":"Google BigQuery","href":"/docs/pt-BR/bigquery"},{"title":"Mixpanel","href":"/docs/pt-BR/mixpanel"},{"title":"Snowflake","href":"/docs/pt-BR/snowflake"},{"title":"Segment (Twilio)","href":"/docs/pt-BR/segment-onesignal-integration"}]},{"group":"OneSignal como destino","pages":[{"title":"Adobe Audience Manager","href":"/docs/pt-BR/adobe-audience-manager"},{"title":"AlloyDB","href":"/docs/pt-BR/alloydb"},{"title":"Amazon Athena","href":"/docs/pt-BR/amazon-athena"},{"title":"Amazon S3","href":"/docs/pt-BR/s3"},{"title":"Amplitude","href":"/docs/pt-BR/amplitude"},{"title":"Apache Kafka","href":"/docs/pt-BR/kafka"},{"title":"Amazon Redshift","href":"/docs/pt-BR/amazon-redshift"},{"title":"Azure Synapse","href":"/docs/pt-BR/azure-synapse"},{"title":"ClickHouse","href":"/docs/pt-BR/clickhouse"},{"title":"Confluent Cloud","href":"/docs/pt-BR/confluent-cloud"},{"title":"Databricks","href":"/docs/pt-BR/databricks"},{"title":"Elasticsearch","href":"/docs/pt-BR/elasticsearch"},{"title":"Google BigQuery","href":"/docs/pt-BR/bigquery"},{"title":"Google Cloud SQL","href":"/docs/pt-BR/google-cloud-sql"},{"title":"Google Sheets","href":"/docs/pt-BR/google-sheets"},{"title":"Greenplum","href":"/docs/pt-BR/greenplum"},{"title":"HubSpot","href":"/docs/pt-BR/hubspot"},{"title":"Materialize","href":"/docs/pt-BR/materialize"},{"title":"Microsoft Fabric","href":"/docs/pt-BR/microsoft-fabric"},{"title":"Mixpanel","href":"/docs/pt-BR/mixpanel"},{"title":"MotherDuck","href":"/docs/pt-BR/motherduck"},{"title":"MySQL","href":"/docs/pt-BR/mysql"},{"title":"PostgreSQL","href":"/docs/pt-BR/postgresql"},{"title":"Pub/Sub","href":"/docs/pt-BR/google-pubsub"},{"title":"SingleStore","href":"/docs/pt-BR/singlestore"},{"title":"Snowflake","href":"/docs/pt-BR/snowflake"},{"title":"SQL Server","href":"/docs/pt-BR/sql-server"},{"title":"Starburst Enterprise","href":"/docs/pt-BR/starburst-enterprise"},{"title":"Starburst Galaxy","href":"/docs/pt-BR/starburst-galaxy"},{"title":"Trino","href":"/docs/pt-BR/trino"},{"title":"Segment (Twilio)","href":"/docs/pt-BR/segment-onesignal-integration"}]},{"group":"Atribuição","pages":[{"title":"RevenueCat","href":"/docs/pt-BR/revenuecat"},{"title":"Adjust","href":"/docs/pt-BR/adjust"},{"title":"BlueConic","href":"/docs/pt-BR/blueconic"}]},{"title":"Integração com o OneSignal: Guia para parceiros","href":"/docs/pt-BR/building-an-integration-with-onesignal-partner-guide"}]}]},{"group":"Privacidade \u0026 Segurança","pages":[{"group":"Credenciais de segurança","pages":[{"title":"SOC 2 Type II","href":"/docs/pt-BR/soc-2-type-ii"},{"title":"ISO 27001","href":"/docs/pt-BR/iso27001"},{"title":"HIPAA","href":"/docs/pt-BR/hipaa"}]},{"group":"Privacidade de dados \u0026 conformidade regulatória","pages":[{"title":"GDPR e Direitos Individuais","href":"/docs/pt-BR/gdpr-compliance"},{"title":"Estrutura de Privacidade de Dados UE-EUA","href":"/docs/pt-BR/eu-us-data-privacy-framework"},{"title":"Conformidade regulatória de email","href":"/docs/pt-BR/email-compliance"},{"title":"Conformidade regulatória de SMS","href":"/docs/pt-BR/sms-regulatory-compliance"},{"title":"Requisitos de privacidade do aplicativo Apple","href":"/docs/pt-BR/apple-app-privacy-requirements"},{"title":"Requisitos de Segurança de Dados do Google Play","href":"/docs/pt-BR/google-play-data-safety-requirements"},{"title":"FAQs de coleta de dados e segurança","href":"/docs/pt-BR/data-questions"},{"title":"Dados coletados pelo SDK do OneSignal","href":"/docs/pt-BR/data-collected-by-the-onesignal-sdk"},{"title":"Tratamento de Dados Pessoais","href":"/docs/pt-BR/handling-personal-data"}]},{"group":"Autenticação","pages":[{"title":"Autenticação em 2 etapas","href":"/docs/pt-BR/2-step-authentication"},{"title":"Single Sign-On (SSO)","href":"/docs/pt-BR/sso"}]}]}]},{"tab":"Guia de desenvolvedor","pages":[{"title":"Guia de desenvolvedor","href":"/docs/pt-BR/developers"}]},{"tab":"Tutoriais","pages":[{"title":"Tutoriais","href":"/docs/pt-BR/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":"es","pages":[{"title":"es","href":"/docs/es/voip-notifications"}]},{"language":"fr","pages":[{"title":"fr","href":"/docs/fr/voip-notifications"}]}]},"title":"Notificações push VoIP - OneSignal","buildId":"dpl_EnxDqhjaNc9a8MVa833TGULPd9uJ","deploymentId":"dpl_EnxDqhjaNc9a8MVa833TGULPd9uJ","dynamics":["07c022d89b","a74be98ba7"],"chunks":["Frame-CIbhtp2j.js","DynamicMarkdown-CtpgKJwj.js","zoom-image-lightbox-CVZVK4hN.js","lightbox-handle-r17bVUz3.js"]}