Visão geral
A Entrega confirmada rastreia quando um dispositivo realmente recebe uma notificação push enviada através do OneSignal. Quando o SDK do OneSignal no dispositivo recebe um push, ele envia um evento de confirmação de volta ao OneSignal contendo o ID da notificação e o ID de assinatura do dispositivo. Isso permite que você veja exatamente quais assinaturas receberam quais notificações. No seu painel do OneSignal, a Entrega confirmada aparece no Relatório de mensagens como Confirmado (ou Recebido). Para todas as métricas de entrega e engajamento, consulte o Glossário de métricas.
A Entrega confirmada é diferente de “Entregue.” Os serviços push de plataforma (APNs, FCM, ADM, HMS) informam se uma notificação foi aceita pelo serviço — não se o dispositivo realmente a recebeu. A Entrega confirmada é a confirmação do lado do dispositivo.
Requisitos
- Disponível apenas em planos pagos. Comparar planos.
- Complete a Configuração do SDK web e/ou a Configuração do SDK móvel.
- A Entrega confirmada só funciona se o dispositivo tiver o SDK do OneSignal instalado.
- Não suportado para assinaturas criadas apenas via API.
Limitações específicas de plataforma
iOS- Requer tanto a configuração da Notification Service Extension quanto do App Group.
- O APNs mantém apenas uma mensagem por aplicativo quando offline. Se múltiplos pushes forem enviados enquanto offline, apenas o mais recente é entregue.
- Suportado apenas para o
datatipo de mensagem Huawei. - Para o tipo
message, a Huawei fornece dados de recibo apenas em seu próprio painel.
- O Safari não suporta Entrega confirmada.
Solução de problemas de Entrega confirmada
Se você não está recebendo notificações push de forma alguma, consulte primeiro Notificações não exibidas.iOS
A Entrega confirmada no iOS requer duas coisas funcionando juntas:- Uma Notification Service Extension (NSE) que executa o código do OneSignal quando um push chega
- Um App Group compartilhado entre o target do seu aplicativo principal e o target da NSE para que eles possam trocar dados
Confirme que o target da NSE existe e tem o código correto
No Xcode, verifique se você tem um target OneSignalNotificationServiceExtension listado nos targets do seu projeto. Se não existir, siga o Passo 2 da Configuração do SDK iOS.Abra o arquivo
NotificationService.swift (ou .m) da NSE. Ele deve chamar OneSignalExtension.didReceiveNotificationExtensionRequest dentro de didReceive(_:withContentHandler:). Se o arquivo ainda contém o código de template padrão da Apple, substitua-o pelo código NSE do OneSignal.Confirme que a NSE tem o pacote OneSignalExtension
Selecione seu target da NSE > General > Frameworks and Libraries (ou Build Phases > Link Binary With Libraries). Verifique se
OneSignalExtension está listado. O target do aplicativo principal usa OneSignalFramework, mas o target da NSE deve usar OneSignalExtension — estes são pacotes diferentes.Verifique que o App Group está configurado corretamente em ambos os targets
O SDK do OneSignal usa um App Group para compartilhar dados entre seu aplicativo principal e a NSE. Há duas formas de configurar isso — escolha a que corresponde à sua configuração.
- Selecione seu target do aplicativo principal > Signing & Capabilities > App Groups.
- Confirme o App Group.
group.YOUR_MAIN_APP_BUNDLE_ID.onesignal — onde YOUR_MAIN_APP_BUNDLE_ID é o identificador de bundle do target do seu aplicativo principal (disponível em General > Identity), siga a aba App Group padrão. Caso contrário, siga a aba App Group personalizado.- App Group padrão - group.YOUR_MAIN_APP_BUNDLE_ID.onesignal
- App Group personalizado
- Selecione seu target da NSE > Signing & Capabilities > App Groups.
- Confirme se o mesmo App Group está listado. Se ausente, adicione-o via + Capability > App Groups e selecione o mesmo grupo.
- Correto:
group.YOUR_MAIN_APP_BUNDLE_ID.onesignal - Incorreto:
group.YOUR_MAIN_APP_BUNDLE_ID.OneSignalNotificationServiceExtension.onesignal
Confirme que os targets de implantação mínima correspondem
Selecione seu target da NSE > General > Minimum Deployments. Este valor deve corresponder à implantação mínima do target do seu aplicativo principal. Uma incompatibilidade pode impedir que a NSE seja executada em certas versões do sistema operacional.
Desmarque "Copy only when installing"
Selecione seu target do aplicativo principal > Build Phases > Embed App Extensions. Certifique-se de que “Copy only when installing” está desmarcado. Se marcado, a NSE não é incluída durante builds de desenvolvimento, portanto nunca é executada durante os testes.
Verifique os valores NSExtension no Info.plist
Selecione seu target da NSE > aba Info e expanda a chave Se a sua NSE for escrita em Objective-C, use
NSExtension. Confirme se ela contém:NotificationService em vez de $(PRODUCT_MODULE_NAME).NotificationService.Verifique se mutable-content está configurado
O OneSignal define automaticamente
mutable-content: 1 no payload do push, o que instrui o iOS a invocar a NSE. Se você enviar pushes via API REST, verifique se não está definindo explicitamente mutable_content: false. Sem mutable-content, o iOS não executa a NSE e a Entrega confirmada não pode ser acionada.Teste se a NSE está sendo executada
Adicione esta linha temporariamente dentro de Envie um push de teste para você mesmo. Se o corpo da notificação começar com
didReceive antes da chamada do OneSignal:[Modified], a NSE está sendo executada corretamente. Se não, revise as etapas acima — a NSE não está sendo invocada. Remova esta linha após os testes.Para depuração avançada da NSE com logs do Xcode Console, consulte Depurando a iOS Notification Service Extension.Android
- Se as notificações não estão sendo exibidas: consulte Solução de problemas de push móvel.
- Se as notificações aparecem mas a Entrega confirmada está faltando: uma Android Service Extension personalizada pode estar bloqueando. Verifique o guia de Android Service Extension.
Web
- Safari não é suportado.
- Para outros navegadores, certifique-se de que a migração para o SDK v16 esteja completa:
- Inicialização correta do SDK:
- Referência correta do Service Worker:
- Inicialização correta do SDK:
Perguntas frequentes
Por que meus números de Entrega confirmada estão baixos ou ausentes?
As causas mais comuns são problemas de configuração (especialmente no iOS), dispositivos inativos e limitações de plataforma.- Configuração incorreta do iOS: A Notification Service Extension ou o App Group está ausente ou incorreto. Consulte Solução de problemas de Entrega confirmada no iOS acima.
- Dispositivos inativos ou abandonados: Dispositivos que estão offline ou que não são mais utilizados não recebem pushes nem enviam eventos de Entrega confirmada. Consulte Como lidar com dispositivos inativos? abaixo.
- Limitações de plataforma: O tipo
messageda Huawei e o Safari não suportam Entrega confirmada. - Fechamento forçado no Android: Alguns fabricantes de dispositivos tratam deslizar o aplicativo como fechamento forçado, o que para os eventos do SDK. Consulte o Guia de push móvel não exibido.
Como lidar com dispositivos inativos?
Dispositivos que estão offline ou abandonados não recebem notificações push nem enviam eventos de Entrega confirmada. Isso é comum quando os usuários substituem ou abandonam dispositivos. Para reengajar usuários inativos:- Use a Atividade de Audiência para reenviar para usuários que não confirmaram a entrega.
- Crie Segmentos baseados em Última Sessão (por exemplo, inativos por 90+ dias).
- Combine com uma Jornada de reengajamento para reconquistá-los.
- Periodicamente segmente usuários inativos para remover dispositivos inalcançáveis.
Por que mostra Confirmado mas não aparece no meu dispositivo?
Um evento de Entrega confirmada significa que o dispositivo recebeu o payload do push. Em casos raros, a notificação pode não ser exibida. Possíveis causas:- Notificação perdida: Envie um push de teste para você mesmo via Encontrar e definir Assinaturas de Teste para descartar isso.
- Modo Foco do iOS: “Não Perturbe”, “Dormir” ou outros modos Foco atrasam ou agrupam notificações. Você pode ter descartado uma notificação agrupada sem vê-la.
- Código do aplicativo suprimindo a exibição:
event.preventDefault()no listener do ciclo de vida em primeiro plano ou Notification Service Extension impede a exibição da notificação.- Chamadas para
removeDeliveredNotifications(withIdentifiers:)ouremoveAllDeliveredNotifications()removem notificações após chegarem.
- Configurações de payload do push:
- Certifique-se de que
priorityesteja definido como alto. Consulte Prioridade de push. collapse_idsubstitui pushes mais antigos por novos usando o mesmo ID.
- Certifique-se de que
Precisa de ajuda?Converse com nossa equipe de Suporte ou envie email para
support@onesignal.comPor favor inclua:- Detalhes do problema que você está enfrentando e passos para reproduzir se disponível
- Seu OneSignal App ID
- O External ID ou Subscription ID se aplicável
- A URL para a mensagem que você testou no Dashboard OneSignal se aplicável
- Quaisquer logs ou mensagens de erro relevantes