Pular para o conteúdo principal

Visão geral

O OneSignal fornece mensagens de erro detalhadas no Console de Ferramentas do Desenvolvedor do seu navegador quando seu site tem o Web SDK ativo. Antes de solucionar problemas, verifique novamente a Configuração do Web SDK para garantir:
  • O snippet JavaScript do OneSignal está colocado no <head> do seu site.
  • Os arquivos do service worker estão devidamente colocados na raiz e acessíveis via HTTPS.
Siga os passos abaixo para depurar problemas comuns e verificar se sua integração está funcionando corretamente.

Passos iniciais de solução de problemas

1

Testar em um perfil de navegador limpo

Abra seu website em um novo perfil de navegador.
2

Abrir ferramentas do desenvolvedor do navegador

Inicie o Console do Desenvolvedor pressionando F12, clicando com o botão direito e selecionando “Inspecionar”, ou navegando para View > Developer > JavaScript Console.
3

Tentar assinar e observar erros

Tente assinar seu site e verifique o Console para erros. Então compare o erro contra a lista abaixo para orientação.

Abra as ferramentas do desenvolvedor do seu navegador e inspecione para erros


Mensagens de erro comuns e soluções

Erros de service worker (403, 404)

[Service Worker Installation] Installing service worker failed TypeError: Failed to register a ServiceWorker for scope (‘https://www.yoursite.com/’) with script (‘https://www.yoursite.com/...’): A bad HTTP response code (403) was received when fetching the script.

Exemplo de erro de instalação de service worker

Se você vê erros de service worker 403 ou 404, seus arquivos de service worker provavelmente estão bloqueados, redirecionados ou ausentes.
  • Confirmar disponibilidade do arquivo
    • Visite a URL do arquivo do service worker no navegador. Você pode encontrar o caminho no dashboard do OneSignal Settings > Push & In-app > Web.
    • Caminhos de exemplo:
      • https://yoursite.com/OneSignalSDKWorker.js
      • https://yoursite.com/push/onesignal/OneSignalSDKWorker.js
    • Se estiver usando WordPress o caminho é:
    • https://yoursite.com/wp-content/plugins/onesignal-free-web-push-notifications/sdk_files/OneSignalSDKWorker.js
  • Se estes retornarem 403/404 ou redirecionamento, sua configuração push não funcionará.
  • Nomes de arquivo são sensíveis a maiúsculas e devem ser publicamente acessíveis.
Veja Guia de Configuração do Service Worker para confirmar configuração correta.

Tipo MIME não suportado

  • Seu service worker deve ser servido como application/javascript.
  • Servir o arquivo com outro tipo MIME (ex: text/html) causará falha no registro.

Erro de tipo MIME no service worker

Redirecionamentos não são permitidos

  • Arquivos do SDK OneSignal não devem redirecionar.
  • Eles devem ser hospedados na mesma origem do seu site (sem domínios CDN ou proxy).

Erro de redirecionamento no console

Configuração Web Push só pode ser usada na origem correta do site

  • Seu domínio atual não corresponde à URL do site configurada no dashboard do OneSignal.
  • Protocolo, domínio e subdomínio devem corresponder exatamente.

Erro de incompatibilidade de origem do site

OneSignal já está definido

  • O SDK é inicializado mais de uma vez, frequentemente causado pela combinação de configuração de plugin WordPress com código manual.

Erro de inicialização duplicada do SDK


Solução de problemas de web push móvel

iOS - Veja Safari Web Push no iOS para requisitos. Android - Web push funciona automaticamente em dispositivos móveis Android usando um navegador suportado.
  1. Primeiro certifique-se de que seu site funciona no Desktop antes de testar no móvel.
  2. Você pode já estar assinado na web Android, mas nosso dashboard não diferencia assinantes de web móvel de assinantes de web desktop. Um assinante de web Android aparece como Linux armv8l na coluna Device da página “Subscriptions”.
  3. Verifique se Notificações estão habilitadas no app do navegador. Por exemplo, no Chrome nas suas Configurações Android > Gerenciador de Aplicativos > Chrome. Certifique-se de que “Mostrar notificações” está marcado.
  4. Limpe seu Cache. Se seu cache do navegador está cheio no móvel, isso pode não permitir mais solicitações ou assinatura.
  5. Alguns usuários relataram que desinstalar e reinstalar o app do navegador corrigiu um problema onde o prompt não aparecia.

Solução de problemas do Safari

  1. A URL do Site definida na Configuração Safari deve ser exatamente o que você vê ao visitar o site. Por exemplo, se você vê https://www.yoursite.com no navegador, então você deve adicionar isto ao campo de configuração. Sites www e não-www são origens diferentes.
  2. Safari 12.1+ criou uma nova regra que usuários devem realizar alguma ação no site antes de poderem ser solicitados
Você deve usar o Slide Prompt no Safari. É por isso que o slide prompt sempre aparece antes do nativo se você usar nossa Configuração Típica. Se você quiser usar apenas o prompt nativo do navegador, precisará configurar seu próprio gatilho para detectar uma ação do usuário. Então chame nossos métodos do Web SDK para acionar o prompt.
  1. Finalmente, tente Limpar seu cache e redefinir permissões push para ver seu site como um usuário pela primeira vez e tente assinar novamente.

Ícones do Safari ou nome do site não mudando

Devido à implementação personalizada de web push do Safari, o nome do seu site e imagem do ícone são tratados como recursos estáticos baixados e armazenados localmente no computador do usuário. Novos nomes de site e novas imagens não são atualizados ou baixados. Infelizmente, qualquer pessoa assinada com esses recursos mais antigos precisará limpar seu cache e redefinir permissões push e retornar ao site para reassinar.

Limpando seu cache e redefinindo permissões push

Veja Limpando seu cache e redefinindo permissões push para mais detalhes.

Depurando usando Ferramentas do Desenvolvedor do Navegador

As ferramentas do desenvolvedor do navegador podem ser usadas para interagir com o web SDK na sua página web e habilitar logging ou facilmente enviar notificações de teste para você mesmo.
1

Acessar o Console de Ferramentas do Desenvolvedor do Navegador

Acessando o console do desenvolvedor

Depuração Desktop:
  • Chrome: Clique com o botão direito na página, clique em Inspecionar, e clique na aba Console da janela popup que abre.
  • Firefox: Clique com o botão direito na página, clique em Inspecionar elemento, e clique na aba Console da janela popup que abre.
  • Safari: Vá para Safari → Preferences → Advanced e certifique-se de que Show Develop menu in menu bar está marcado. Então, na sua página web, clique com o botão direito, clique em Inspecionar elemento, e clique na aba Console da janela popup que abre.
Depuração Android:
  • Chrome no Android: Habilite USB Debugging, conecte seu dispositivo ao seu computador e acesse as Dev Tools com chrome://inspect#devices no seu navegador Chrome Desktop.
  • Firefox no Android: Habilite USB Debugging, conecte seu dispositivo ao seu computador e acesse as Dev Tools com about:debugging no seu navegador Firefox Desktop.
2

Habilitar logging do web SDK

Você deve conseguir executar comandos no Console das ferramentas do desenvolvedor agora.Execute o seguinte código:
OneSignal.Debug.setLogLevel('trace');
Você deve ver undefined como resultado.Se você vê:
Uncaught ReferenceError: OneSignal is not defined(…) ReferenceError: OneSignal is not defined
Então o OneSignal não está ativo na sua página web, ou você precisa mudar para o contexto do frame top (veja captura de tela acima).Agora que o debug logging do nosso web SDK está habilitado, por favor feche a aba e abra uma nova aba para a mesma página (atualizar a página não é suficiente para acionar alguns dos nossos eventos do SDK). Você deve ver muita saída no Console.

Console com logs verbosos do SDK

Você sempre pode desabilitar este logging adicional inserindo este código:
OneSignal.Debug.setLogLevel('warn');
3

Verificar se você está assinado

Execute no Console:
function getUserInfo() {
	console.log('getUserInfo()');
	Promise.all([
		OneSignal.Notifications.permission,
		OneSignal.User.PushSubscription.id,
		OneSignal.User.PushSubscription.token,
		OneSignal.User.PushSubscription.optedIn,
		OneSignal.context.serviceWorkerManager.getActiveState(),
	])
		.then(
			([
				isSubscribed,
				subscriptionId,
				pushToken,
        optedIn,
				serviceWorkerActive,
			]) => {
        console.log('What is the current URL of this page?', location.href);
         console.log(
					"Is a service worker registered and active? (should be false on Safari, otherwise should be 'OneSignal Worker')?",
					serviceWorkerActive
				);
        console.log('')
        console.log('Are you subscribed, in the browser?', isSubscribed)
        console.log('Are you opted-in, in OneSignal?' , optedIn);
				console.log('');
				console.log('What is your OneSignal Subscription ID?', subscriptionId);
				console.log('What is your Push Token?', pushToken);

			}
		)
		.catch(e => {
			console.error('Issue determining whether push is enabled:', e);
		});
}
getUserInfo();
Dependendo de você estar assinado ou não, você deve ver similar ao abaixo:
What is the current URL of this page? http://localhost:8080/
Is a service worker registered and active? (should be false on Safari, otherwise should be 'OneSignal Worker')? OneSignal Worker

Are you subscribed, in the browser? true
Are you opted-in, in OneSignal? true

What is your OneSignal Subscription ID? 22ff6b0d-60e1-469d-b667-005274204322
What is your Push Token? https://fcm.googleapis.com/fcm/send/drKvxiBc9Eo:APA91bFoa88bzkuudYFmuyNb8uIA60dI44SnBbXi0_4GAYa2Ln07XzrOs1-k5KVxrwKf8oVxBvzIXVN-44bamCRkaQ6cFODy7-8slGgnV3i2OqS3EgYrzU6VcO1KZaBHacsZhqvWqIRv
4

Enviar uma notificação de teste para você mesmo

Apenas se você estiver assinado (veja seção acima), você pode enviar uma notificação de teste para você mesmo. Veja Encontrar & Definir Assinaturas de Teste para detalhes.

Depurando não recebimento de notificações do Chrome

Nota: Por favor complete estes passos em ordem.
1

Siga os passos 1 - 4 acima para tentar receber uma notificação de teste

  • Para o passo #3, você está assinado? Se não, pare aqui, limpe completamente os dados do seu site seguindo estas instruções específicas, e então reassine seu site para receber notificações. Execute o passo #3 novamente após para verificar se você está realmente assinado. Ao seguir as instruções de limpar dados do site, lembre-se de fechar todas as abas do seu site ou reiniciar seu navegador, já que o Chrome impede que o armazenamento do site seja acessado até que todas as abas existentes do seu site sejam fechadas.
  • Para o passo #4, você recebe uma notificação de teste? Se sim, você terminou!
2

Verificar a Página Delivery no seu dashboard OneSignal

Se você está assinado mas não recebeu uma notificação de teste, por favor visite sua Página Delivery do dashboard OneSignal para ver se as notificações de teste que você enviou para si mesmo aparecem no topo.
3

Usar chrome://gcm-internals para verificar entrega de mensagem

Se você está assinado, não recebeu uma notificação de teste, mas você vê que a mensagem foi entregue (colorida em verde), por favor abra o Chrome em chrome://gcm-internals.Clique no botão “Start Recording” no topo esquerdo. Certifique-se de ver “Connection State: CONNECTED”.Deixe isto aberto e envie um push para você mesmo (siga o passo #4 acima para enviar uma notificação de teste para você mesmo).Você deve ver algo no “Receive Message Log” se você recebeu.

Logging de internals GCM

  • Se você não vê um “Data msg received”, então seu navegador Chrome não está recebendo a notificação de jeito nenhum. Por favor nos avise no suporte sobre isso.
  • Se você vê “Data msg received” mas ainda não recebeu uma notificação, prossiga para o passo #4.
4

Usar chrome://serviceworker-internals para depurar service worker

Visite chrome://serviceworker-internals.Procure por Scope: https://your-site.com.Clique em Inspect, ou Start -> Inspect, como abaixo. Uma janela popup das Ferramentas do Desenvolvedor do Chrome aparecerá.

Inspecionando o service worker

Na popup das Ferramentas do Desenvolvedor do Chrome para nosso service worker, clique na aba Console, e execute OneSignalWorker.log.trace();. Deve retornar undefined. Quaisquer mensagens do nosso service worker devem agora aparecer neste popup.
5

Capturar saída do console e contatar suporte

Mude de volta do popup das Dev Tools do service worker para o console das Ferramentas do Desenvolvedor da sua página principal (o mesmo usado no passo 2). Envie outra notificação de teste para você mesmo. Se você ainda não vê a notificação, revise a saída do console para quaisquer novos erros ou mensagens. Para compartilhar esta informação com o suporte:
  • Clique com o botão direito dentro do Console.
  • Selecione Save as … para exportar o arquivo de log.
  • Anexe este arquivo e entre em contato com nosso suporte via chat para assistência adicional.
Need help?Chat with our Support team or email support@onesignal.comPlease include:
  • Details of the issue you’re experiencing and steps to reproduce if available
  • Your OneSignal App ID
  • The External ID or Subscription ID if applicable
  • The URL to the message you tested in the OneSignal Dashboard if applicable
  • Any relevant logs or error messages
We’re happy to help!