Pular para o conteúdo principal
As notificações push que você envia do OneSignal devem primeiro ir para os diferentes serviços de push (por exemplo, FCM, APNS, HMS). A partir dos serviços de push, as mensagens são entregues ao dispositivo de cada usuário. No seu painel do OneSignal Relatórios de mensagens push:
  • Entregue significa que a notificação push foi entregue com sucesso aos serviços de push. Recebemos a resposta dos serviços de push.
  • Confirmado significa que o SDK do OneSignal no dispositivo recebeu a notificação. Recebemos este status diretamente do dispositivo de cada usuário.
Se sua notificação foi “Entregue”, mas não “Confirmada” e não apareceu no dispositivo (ou foi atrasada), este guia ajuda você a solucionar o motivo.

Pré-requisitos

Para solucionar problemas de forma eficaz, reúna o seguinte:
Se você tiver apenas o ID Externo, procure a inscrição na aba Público > Inscrições usando filtros como Tipo de Dispositivo, Última Sessão e Endereço IP.

Problemas no nível do dispositivo

Itens controlados pelo usuário no dispositivo que podem afetar a entrega de notificações push.

Permissão de push e status de inscrição

No dispositivo, verifique as Configurações de Notificação do aplicativo. Verifique se as permissões de notificações estão habilitadas. Em seguida, abra o aplicativo. É imperativo que você abra o aplicativo no dispositivo para que nosso SDK atualize o status de inscrição e outras propriedades. No seu painel do OneSignal Público > Inscrições:
  • Procure pelo ID de Inscrição
  • Se você não tiver o ID de Inscrição, tente encontrá-lo pesquisando o ID Externo e/ou filtrando por Tipo de Dispositivo, Última Sessão e Endereço IP.
Você deve ver que a Inscrição push tem um status de push “Inscrito”.

Categorias do Android desativadas

Se o dispositivo for Android, verifique Aplicativo de Configurações > Notificações > Seu Aplicativo, você deve ver “Mostrar notificações” habilitado e todas as categorias abaixo habilitadas. Se você tiver uma categoria desabilitada, não receberá notificações dessa categoria. Neste exemplo, a categoria Carrinho Abandonado - Urgente está desativada. Se esta categoria for usada em uma notificação, o dispositivo não receberá a notificação.

A imagem mostra a categoria desabilitada para seu aplicativo no dispositivo, portanto, ao enviar com essa categoria, o dispositivo não receberá este push.

Se nenhuma categoria for definida, o OneSignal usa uma categoria padrão “Diversos”. Certifique-se de que esta categoria esteja habilitada se você a vir desabilitada. Mais detalhes em Categorias de Notificação Android.
Alguns dispositivos Samsung desativam automaticamente categorias para aplicativos por padrão. Veja detalhes neste post do reddit e nestes artigos da Android Police e artigo 2.
Para tentar educar seus usuários sobre isso, você pode configurar mensagens in-app para direcionar usuários Samsung e exibir instruções para habilitar categorias. Fornecemos um tutorial Exemplo: Direcionar certos fabricantes e dispositivos Android.

Aplicativo Android é Forçado a Parar

Quando um aplicativo Android é Forçado a Parar, o dispositivo impedirá que as notificações push desse aplicativo sejam exibidas. Para ajudar a economizar bateria, alguns fabricantes Android como Xiaomi, Huawei, Samsung e outros implementaram gerenciamento agressivo de processos em segundo plano que pode Forçar a Parada do seu aplicativo quando o usuário o desliza para fora (enquanto omite aplicativos maiores como Facebook, Whatsapp, Gmail, etc). Há muitas informações sobre isso online como: https://dontkillmyapp.com/ e escrevemos um post de blog sobre isso que gerou muita discussão no Reddit. Dependendo do dispositivo, você pode precisar seguir as seguintes etapas para evitar que isso aconteça:
  1. Permitir Atividade em Segundo Plano:
    • Configurações > Aplicativos > Seu Aplicativo > Bateria > Permitir atividade em segundo plano.
  2. Desabilitar Recurso de Aplicativos em Suspensão:
    • Configurações > Bateria e Cuidados do Dispositivo > Bateria > Limites de Uso em Segundo Plano > Aplicativos em Suspensão > Remova seu aplicativo desta lista.
  3. Bloquear o Aplicativo em Aplicativos Recentes:
    • Abra seu aplicativo, em seguida, toque no botão Aplicativos Recentes.
    • Encontre seu aplicativo, toque e segure na janela do aplicativo, depois Bloqueie este aplicativo (disponível em alguns modelos Samsung).
  4. Habilitar Inicialização Automática para o Aplicativo (Em Alguns Dispositivos):
    • Configurações > Aplicativos > Seu Aplicativo > Permissões > Inicialização Automática > Habilitar.
  5. Desabilitar Otimização de Bateria Adaptativa para o Aplicativo:
    • Configurações > Bateria e Cuidados do Dispositivo > Bateria > Mais Configurações de Bateria > Bateria Adaptativa > Desativar (ou excluir seu aplicativo).
Ao testar, certifique-se de que seu aplicativo esteja em execução ao enviar a notificação. Consulte Obtendo um Log de Depuração para verificar se você está recebendo a mensagem.

Conexão de rede

Os dispositivos devem estar online para receber notificações push. Se seu dispositivo estiver desligado, em modo avião, tiver uma conexão instável ou sem internet, o push não será exibido até que uma conexão adequada seja estabelecida. Consulte Parâmetro Time To Live (TTL) para detalhes.

Conexão Wifi, Firewall ou VPN

Verifique a rede / WiFi à qual você está conectado, pois ela pode ter fechado sua conexão com os servidores da Apple ou Google. Tente desabilitar e reabilitar sua conexão com a internet. Tente também sem wifi usando dados celulares. Se você está restringindo o tráfego de ou para a Internet, precisa configurá-lo para permitir conectividade com os serviços de push.

Modos Não Perturbe e Foco

Se o dispositivo usa um modo “Não Perturbe” ou “Foco”, pode impedir a exibição de notificações ou agrupar notificações de forma diferente de outras notificações para seu aplicativo. Se você deslizar as notificações agrupadas do modo foco, elas não aparecerão mais tarde nas notificações já agrupadas para seu aplicativo no centro de notificações do dispositivo. Verifique e desabilite esses modos no dispositivo.
  • iOS: Configurações > Notificações > Modo Foco
  • Android: Configurações > Notificações > Modo Foco
Em seguida, envie algumas notificações de teste para si mesmo para verificar.

Comportamento de agrupamento de notificações

Juntamente com os Modos Foco, diferentes versões do Android podem ter seu próprio comportamento de agrupamento de notificações. Soluções para tentar:
  1. Tente criar categorias de notificação Android no seu painel do OneSignal ou usando código. Em seguida, defina este ID em todas as suas notificações para ver se isso tem algum efeito.
  2. Revise as configurações específicas do dispositivo: No dispositivo, verifique Configurações > Notificações > Configurações avançadas para quaisquer opções de agrupamento específicas do dispositivo.
  3. Verifique os limites de notificação: Verifique se a otimização de bateria ou recursos de suspensão de aplicativos estão habilitados para seu aplicativo neste dispositivo específico.

Modo de baixa energia e otimização de bateria

Dispositivos iOS: Desabilite o modo de baixa energia ao testar ou carregue o dispositivo. Dispositivos Android: Existem vários nomes diferentes para configurações de “Otimização de Bateria”, dependendo do fabricante do dispositivo e da versão do sistema operacional. Nas Configurações de Bateria, defina o aplicativo como “Sem restrições” ou “Não Otimizado”. Se você não tiver essa configuração, procure por Otimização de Bateria ou Modo de Economia de Energia ou Economia de Energia ou Limites de uso em segundo plano ou Configurações de Bateria Adaptativa e desabilite para o aplicativo ou durante o teste.

Peculiaridades do emulador

Seu dispositivo emulador precisa:
  1. Ter o Google Play Services (Google Play Store) instalado
  2. Iniciar com uma inicialização a frio
  • Abra o Gerenciador de Dispositivos do Android Studio
  • Selecione seu dispositivo, certifique-se de que tenha a Google Play Store instalada e clique em Editar
  • Vá para Configurações Adicionais ou botão Mais
  • Defina a Opção de inicialização como Cold Boot
  • Salve as alterações e reinicie o emulador

Enviando push

Coisas comuns para verificar ao enviar notificações push.

Dispositivo não está no público da mensagem

Sua inscrição pode não estar incluída no público-alvo da mensagem. Se estiver usando Segmentos ou filtros, certifique-se de que sua inscrição atenda aos critérios. Se estiver direcionando ID Externo ou outros aliases, verifique se ele está definido e se você está enviando para o correto.

ID de Colapso

Se você está adicionando um ID de Colapso às suas mensagens, a notificação mais recente substituirá as notificações mais antigas com o mesmo ID. Verifique se você não está configurando isso ou se está configurando corretamente para as notificações que deseja substituir. Consulte Remover notificações e TTL para detalhes.

Modo Doze do Android, prioridade e mensagens despriorizadas (reguladas)

Os recursos de economia de energia do Android (modo Doze e App Standby) podem atrasar ou bloquear notificações. Esses modos entram em vigor automaticamente quando o dispositivo está desconectado e estacionário por um período de tempo. Se o dispositivo estiver nesses modos, enviar mensagens de alta prioridade despertará o aplicativo. No entanto, enviar muitas pode fazer com que suas notificações sejam despriorizadas e enviadas com prioridade normal. FCM afirma:
Mensagens de alta prioridade no Android são destinadas a conteúdo visível ao usuário e sensível ao tempo, e devem resultar em notificações voltadas para o usuário. Se o FCM detectar um padrão em que as mensagens não resultam em notificações voltadas para o usuário, suas mensagens podem ser despriorizadas para prioridade normal ou delegadas para manipulação pelos Serviços do Google Play.

Desenvolvedores: Código bloqueando ou removendo notificações

Prevenção de notificação em primeiro plano do OneSignal

Nosso SDK tem um método Listener de Evento de Primeiro Plano. Dentro deste método, você pode chamar event.preventDefault() que bloqueará a notificação de ser exibida enquanto o aplicativo estiver aberto. Ao testar, certifique-se de que o aplicativo esteja em segundo plano ou fechado para verificar se isso não está bloqueando notificações.

Extensão de Serviço Android bloqueando notificações

Se você configurou a Extensão de Serviço de Notificação Android, este é o ponto de entrada para sua notificação no aplicativo. Você pode estar bloqueando notificações com o método event.preventDefault(). Verifique seu código para ver se isso está sendo usado e sob quais condições.

iOS UNUserNotificationCenterDelegate bloqueando notificações em primeiro plano

Se você configurou o iOS UNUserNotificationCenterDelegate, você pode ter código bloqueando o dispositivo iOS de mostrar a notificação enquanto estiver em primeiro plano. Remova este código personalizado e use nosso método SDK Listener de Evento de Primeiro Plano em vez disso.

Limpeza de badge do iOS

A limpeza de badge pode afetar as notificações. Quando um aplicativo limpa badges, pode remover notificações existentes do Centro de Notificações. O SDK do OneSignal também limpará badges quando o aplicativo abrir, o que remove as notificações. Consulte Badges para detalhes sobre como evitar isso.

Removendo notificações

A Apple fornece o método removeAllDeliveredNotifications() para remover todas as notificações entregues do seu aplicativo do Centro de Notificações. Consulte documentos do desenvolvedor da Apple sobre removeAllDeliveredNotifications().

Conflitos do Firebase

Se você está usando o Firebase Messaging SDK, verifique seu arquivo Android Manifest para a seguinte linha. Isso pode estar bloqueando suas notificações.
com.google.firebase.iid.FirebaseInstanceIdReceiver

Teste

Siga Obtendo um Log de Depuração para adicionar nossos métodos de depuração verbose ao aplicativo. Tenha o aplicativo em execução em segundo plano e envie uma mensagem para si mesmo. Se você não está recebendo o evento de mensagem, entre em contato com support@onesignal.com com as seguintes informações:
  • O log completo do teste. Consulte Obtendo um Log de Depuração para detalhes.
  • O link para o relatório de mensagem no seu painel onesignal.com que você enviou ao depurar. Isso pode ser encontrado em Entrega > Mensagens Enviadas. Basta clicar na mensagem que você enviou, depois copie e cole a URL e compartilhe conosco.

Verificando o estado do seu aplicativo

Execute o seguinte para verificar o estado atual do seu aplicativo. Substitua “com.company.appname” pelo nome do seu pacote.
adb shell dumpsys package com.company.appname | grep stopped
Se você ver stopped=false, está tudo bem, caso contrário, você verá stopped=true, então seu aplicativo foi forçado a parar de alguma forma. Outra maneira é enviar algumas notificações e verificar a seguinte entrada de logcat do GCM.
W/GCM-DMM: broadcast intent callback: result=CANCELLED forIntent {
   act=com.google.android.c2dm.intent.RECEIVE pkg=com.onesignal.example (has extras)
}
Se você ver esta intenção cancelada acima, então seu aplicativo não pôde ser iniciado para processar a notificação. Alguns fabricantes de dispositivos colocarão aplicativos na lista branca para não entrarem no estado de fechamento forçado. Exemplos como Gmail e Whatsapp.

Depuração Adicional

O FCM fornece uma API REST para consultar a última vez que um dispositivo foi conectado ao FCM. Consulte a seguinte documentação do Google sobre como obter isso. https://developers.google.com/instance-id/reference/server#get_information_about_app_instances