- 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.
Pré-requisitos
Para solucionar problemas de forma eficaz, reúna o seguinte:- Seu ID do Aplicativo OneSignal
- O ID da Mensagem do push que não foi exibido
- Do usuário:
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.
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.
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:-
Permitir Atividade em Segundo Plano:
- Configurações > Aplicativos > Seu Aplicativo > Bateria > Permitir atividade em segundo plano.
-
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.
-
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).
-
Habilitar Inicialização Automática para o Aplicativo (Em Alguns Dispositivos):
- Configurações > Aplicativos > Seu Aplicativo > Permissões > Inicialização Automática > Habilitar.
-
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).
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.- FCM requer portas abertas para: 5228, 5229 e 5230. Mais detalhes: https://firebase.google.com/docs/cloud-messaging/concept-options
- APNS deve se conectar a: porta TCP 5223 & porta TCP 443 ou 2197. Mais detalhes: https://support.apple.com/en-us/HT203609
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
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:- 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.
- 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.
- 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:- Ter o Google Play Services (Google Play Store) instalado
- 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 chamarevent.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étodoevent.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étodoremoveAllDeliveredNotifications() 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.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 comsupport@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.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.