Skip to main content

Configuração & debugging

Você pode precisar envolver as chamadas OneSignal em OneSignalDeferred.push(async function (OneSignal) { ... }) (use function (OneSignal) { ... } quando não precisar de await). O argumento OneSignal é a instância do SDK usada em toda esta referência (por exemplo await OneSignal.init({ ... })). Você pode adicionar vários callbacks via push, ou colocar múltiplas instruções dentro de um único callback. O OneSignal SDK é carregado com o atributo defer na sua página. Por exemplo: <script src="https://cdn.onesignal.com/sdks/web/v16/OneSignalSDK.page.js" defer></script> Dessa forma, o SDK executa após o documento ser analisado e não bloqueia a renderização. Scripts que executam antes ainda precisam de um lugar para enfileirar trabalho até o SDK estar pronto. Comece com: window.OneSignalDeferred = window.OneSignalDeferred || []; Essa linha define OneSignalDeferred se estiver ausente. Se um snippet anterior na página já a definiu, a mesma referência é mantida; caso contrário, ela começa como um array vazio [] no qual você adiciona callbacks via push. Arrays expõem um método .push(), então você enfileira funções com OneSignalDeferred.push(...). Quando o SDK carrega, ele esvazia a fila e redefine o .push() para que pushes posteriores executem imediatamente (veja o código-fonte do Web SDK).
A maioria dos snippets abaixo usa OneSignal sozinho. Trate isso como a instância do seu callback deferred após await OneSignal.init({ ... }), a menos que uma seção indique o contrário (por exemplo setConsentRequired() antes de init).

init()

Inicializa o OneSignal SDK. Deve ser chamado na tag <head> uma vez em cada página do seu site. O ONESIGNAL_APP_ID pode ser encontrado em Keys & IDs.
Se você deseja atrasar a inicialização do OneSignal SDK, recomendamos usar nossos métodos de Privacidade.
Opções de init funcionam apenas com a Configuração com Código Personalizado. Caso contrário, são configuradas no dashboard do OneSignal.

Parâmetros promptOptions

Use promptOptions para localizar ou personalizar os prompts de permissão do usuário. Todos os campos são opcionais. Estrutura: promptOptions.slidedown.prompts é um array; cada elemento é uma configuração de prompt. Os campos type, autoPrompt, delay, text e categories pertencem a cada objeto dentro de prompts, não como chaves de nível superior ao lado de appId no init.

Parâmetros notifyButton

Configure o Sino de Subscription (botão de notificação) mostrado na página.

Parâmetros welcomeNotification

Personalize a notificação de boas-vindas enviada após a primeira subscription.
Exemplo:

setLogLevel()

Define o logging para imprimir logs adicionais no console. Veja Passos de troubleshooting para mais detalhes. Execute a partir de um callback deferred após init (mesma instância OneSignal usada no restante da página).
JavaScript
Níveis de log:
  • 'trace'
  • 'debug'
  • 'info'
  • 'warn'
  • 'error'

Identidade & propriedades do usuário

Quando os usuários se inscrevem para notificações push no seu website, o OneSignal cria automaticamente um OneSignal ID (ID de nível de usuário) e um Subscription ID (ID de nível de dispositivo). Você pode associar múltiplas Subscriptions (ex.: dispositivos, emails, números de telefone) a um único usuário chamando login() com seu identificador de usuário único.
Veja Users e Subscriptions para mais detalhes.

login(external_id)

Define o contexto do usuário atual para o external_id fornecido. Isso vincula o dispositivo atual (Subscription web push) a um usuário conhecido e unifica todos os dados futuros sob um único onesignal_id. Use este método apenas para usuários identificados (por exemplo, após login ou restauração de conta). Para usuários anônimos, não chame login. Em vez disso, rastreie-os usando o onesignal_id atribuído automaticamente (veja OneSignal.User.onesignalId). O que acontece quando você chama login(external_id) O SDK se comporta de maneira diferente dependendo se o external_id já existe no app OneSignal. Se o external_id já existir:
  • O SDK muda para aquele usuário existente.
    • Você pode ver um 409 Conflict no log de rede ou console do navegador. Isso significa que o External ID já existe no app; é esperado nesse caminho e normalmente não é uma rejeição de promise que você precise tratar.
  • O onesignal_id atual é descartado e o onesignal_id existente daquele usuário é carregado.
  • O dispositivo atual (Subscription web push) é vinculado ao usuário existente.
  • Dados anônimos coletados antes do login não são mesclados e são descartados. Isso inclui tags, dados de sessão, Subscriptions de email/SMS e outras propriedades locais do usuário.
Se o external_id não existir:
  • Um novo usuário é criado usando o onesignal_id atual.
  • Todos os dados coletados enquanto o usuário era anônimo são mantidos.
  • O dispositivo (Subscription web push) fica vinculado a esse novo usuário.
Comportamento de retry:
  • O SDK repete automaticamente a solicitação de login em falhas de rede ou erros de servidor.
  • Você não precisa implementar sua própria lógica de retry.
Boas práticas:
  • Chame login(external_id) a cada carregamento de página assim que souber o ID do usuário (por exemplo, após o sign-in ou restauração de sessão).
  • Chame novamente sempre que o usuário conectado mudar (troca de conta).
  • Não chame login antes de ter um identificador de usuário estável e conhecido.
JavaScript

logout()

Desvincula o usuário atual da Subscription web push.
  • Remove o external_id da Subscription web push atual. Não remove o external_id de outras Subscriptions.
  • Redefine o onesignal_id para um novo usuário anônimo.
  • Quaisquer novos dados (ex.: tags, Subscriptions, dados de sessão, etc.) agora serão definidos no novo usuário anônimo até que ele seja identificado com o método login.
Use isto quando um usuário sair do seu site e você não quiser mais enviar mensagens transacionais direcionadas para o navegador.
JavaScript

OneSignal.User.onesignalId

Recupera o onesignal_id do usuário atual armazenado localmente no navegador. Esse valor representa o contexto ativo do usuário (o User ID do OneSignal) e pode mudar ao longo do tempo — por exemplo, quando você chama login(external_id) ou quando o SDK inicializa. Se chamado muito cedo, este método pode retornar null. Esse valor não é o Subscription ID, que é usado para identificar o navegador, ou seja, a Subscription web push (veja User.PushSubscription.id). Quando o onesignal_id está disponível:
  • Após o OneSignal SDK terminar a inicialização
  • Após um usuário ser identificado com login(external_id)
  • Após trocar de usuário ou restaurar uma sessão
Se você precisar reagir de forma confiável a mudanças ou obter esse ID, use User State addEventListener('change', …) em vez de polling. Casos de uso comuns: Na maioria dos casos, você vai querer usar seu próprio External ID definido via método login. No entanto, há alguns casos em que você pode querer usar o onesignal_id diretamente.
  • Rastrear usuários anônimos antes de um External ID ser definido
  • Armazenar o OneSignal ID no seu backend para suporte ou debugging
  • Correlacionar usuários OneSignal com logs internos
  • Exibir o ID para troubleshooting ou QA
Não persista o OneSignal ID como identificador permanente de usuário. Ele pode mudar quando usuários fazem login, logout ou trocam de conta.
JavaScript

OneSignal.User.externalId

Recupera o External ID do usuário atual salvo localmente no navegador. Pode ser null se não foi definido via método login ou se chamado antes do estado do usuário ser inicializado. Em vez disso, use User State addEventListener('change', …) para escutar mudanças de estado do usuário.
JavaScript

addEventListener() User State

Escute mudanças no contexto do usuário (ex.: login, logout, atribuição de ID).
JavaScript

addAlias(), addAliases(), removeAlias(), removeAliases()

Aliases são identificadores alternativos (como usernames ou IDs de CRM).
  • Defina o external_id com login() antes de adicionar aliases. Aliases adicionados a subscriptions sem external_id não serão sincronizados entre múltiplas subscriptions.
  • Veja Aliases para detalhes.
JavaScript

getLanguage(), setLanguage()

Obtenha e/ou sobrescreva o idioma detectado automaticamente do usuário. Veja Mensagens multi-idioma para uma lista de códigos de idioma disponíveis.
JavaScript

Eventos personalizados

Acione Journeys e a ativação do passo Wait Until via um evento personalizado.
Eventos personalizados requerem Web SDK 160500+.Um usuário deve estar logado para que eventos personalizados sejam rastreados.Chame as APIs de eventos personalizados na instância OneSignal passada para OneSignalDeferred.push (veja Configuração & debugging no topo desta página), não em window.OneSignal — o SDK da página é inicializado através da fila deferred, e esse callback é a forma suportada de acessar OneSignal.User.
Rastreie e envie um evento personalizado executado pelo usuário atual.
  • name - Obrigatório. O nome do evento como uma string.
  • properties - Opcional. Pares chave-valor para adicionar ao evento. O dicionário ou mapa de properties deve ser serializável em um Objeto JSON válido. Suporta valores aninhados.
O SDK inclui automaticamente dados específicos do app no payload de properties sob a chave reservada os_sdk, que estará disponível para consumo. Por exemplo, para direcionar eventos por tipo de subscription, você acessaria os_sdk.type.
json

trackEvent()

Chame após init() completar. Este exemplo usa um único callback deferred para que init sempre execute antes de trackEvent:
JavaScript
Em produção, adicione trackEvent ao callback deferred onde você já faz await OneSignal.init(...). Não registre um segundo init a menos que seja intencional.

Tags

Tags são pares personalizados key : value de dados string que você define em usuários com base em eventos ou propriedades do usuário. Veja Tags para mais detalhes.

addTag(), addTags()

Define uma única ou múltiplas tags no usuário atual.
  • Os valores serão substituídos se a chave já existir.
  • Exceder o limite de tags do seu plano fará com que as operações falhem silenciosamente.
JavaScript

removeTag(), removeTags()

Deleta uma única ou múltiplas tags do usuário atual.
JavaScript

getTags()

Retorna a cópia local das tags do usuário. Tags são atualizadas do servidor durante o login() ou novas sessões do app.
JavaScript

Privacidade

setConsentRequired()

Impõe o consentimento do usuário antes de a coleta de dados começar. Deve ser chamado antes de init() executar (por exemplo, no início do primeiro callback OneSignalDeferred, antes de await OneSignal.init(...)). Este método é o mesmo que adicionar requiresUserPrivacyConsent: true às opções de init.
JavaScript

setConsentGiven()

Concede ou revoga o consentimento do usuário para coleta de dados. Sem consentimento, nenhum dado é enviado ao OneSignal e nenhuma subscription é criada.
  • Se setConsentRequired() ou requiresUserPrivacyConsent estiver definido como true, nosso SDK não será totalmente habilitado até setConsentGiven ser chamado com true.
  • Se setConsentGiven estiver definido como true e uma Subscription for criada, e depois for definido como false, aquela Subscription não receberá mais atualizações. Os dados atuais daquela Subscription permanecem inalterados até setConsentGiven ser definido como true novamente.
  • Se você deseja deletar os dados de User e/ou Subscription, use nossas APIs Delete user ou Delete subscription.
JavaScript

Subscriptions

Uma Subscription representa uma única instância de canal de mensagens (por exemplo, um navegador) e tem um Subscription ID único (o ID de nível de dispositivo do OneSignal). Um usuário pode ter múltiplas Subscriptions em diversos dispositivos e plataformas. Veja Subscriptions para mais detalhes.

User.PushSubscription.id

Recupera o Subscription ID web push do navegador atual, armazenado localmente pelo SDK. Esse ID identifica exclusivamente o canal push desse navegador específico, não o usuário. É comumente usado ao associar dispositivos ou navegadores ao seu backend ou ao debugar problemas de entrega. Se chamado antes de a Subscription ser criada ou restaurada, esse valor pode ser null.
Para detectar de forma confiável quando o Subscription ID web push fica disponível ou muda, use o listener de Subscription push.
JavaScript

User.PushSubscription.token

Retorna o token de subscription push atual. Pode retornar null se chamado muito cedo. É recomendado obter esses dados dentro do subscription observer para reagir a mudanças.
JavaScript

addEventListener() Mudanças de Subscription Push

Use este método para responder a mudanças de subscription push como:
  • O dispositivo recebe um novo token push do Google (FCM) ou da Apple (APNs)
  • O OneSignal atribui um subscription ID
  • O valor optedIn muda (ex.: chamou optIn() ou optOut())
  • O usuário alterna a permissão push nas configurações do navegador ou do SO e depois retorna ao seu site
Quando isso acontece, o SDK executa seu listener de change com um objeto de estado que inclui previous e current para que você possa detectar o que mudou.
Quando autoResubscribe é true, visitantes que retornam podem disparar o evento change com optedIn: true tanto em previous quanto em current, porque a permissão do navegador não mudou — apenas o token push foi registrado novamente (por exemplo, após limpar os dados do site ou migrar). Para analytics ou rastreamento server-side que devem refletir inscrições novas ou reinscrições, event.current.token && !event.previous.token geralmente é mais confiável do que comparar apenas optedIn.
Para parar de escutar atualizações, chame removeEventListener() com a mesma referência de handler que você passou para addEventListener().
JavaScript
Analytics externos (por exemplo Google Analytics via dataLayer): dispare um evento personalizado quando um token push aparecer e não houver token antes, para que o re-registro com optedIn inalterado ainda seja contado corretamente. O subscription ID pode chegar no mesmo callback ou em um evento change posterior dependendo do timing:
JavaScript
Em navegação anônima ou privada, o Slidedown ainda pode aparecer quando autoPrompt é true, mas subscriptions push tipicamente não persistem após o fim da sessão. isPushSupported() não detecta navegação privada; ele apenas indica se web push está disponível em princípio. Antes de acionar o prompt programaticamente (por exemplo promptPush()), ainda assim chame isPushSupported() para evitar exibir o prompt em navegadores que não podem usar web push.

optOut(), optIn(), optedIn

Controla o status de subscription (subscribed ou unsubscribed) da Subscription push atual. Use estes métodos para controlar o status de subscription push no seu site. Casos de uso comuns: 1) Impedir que push seja enviado para usuários que fazem logout. 2) Implementar um centro de preferências de notificação dentro do seu site.
  • optOut(): Define o status de subscription push atual como unsubscribed (mesmo se o usuário tiver um token push válido).
  • optIn(): Faz uma das seguintes ações:
    1. Se a Subscription tiver um token push válido, define o status de subscription push atual como subscribed.
    2. Se a Subscription não tiver um token push válido, tenta exibir o prompt de permissão push.
  • optedIn: Retorna true se o status de subscription push atual for subscribed, caso contrário false. Se o token push for válido mas optOut() foi chamado, isto retornará false.
JavaScript

addEmail(), removeEmail()

Adiciona ou remove uma Subscription de email (endereço de email) para o usuário atual. Estes métodos são compatíveis com Identity Verification. Quando você chama addEmail(email):
  • O endereço de email se torna uma Subscription de email do usuário atual.
  • O email pode ser criado ou reatribuído.
  • O mesmo endereço de email não pode existir múltiplas vezes no mesmo app OneSignal. Se você vir endereços de email duplicados, verifique suas solicitações REST API e contate o suporte se necessário.
O SDK retorna os seguintes códigos de status HTTP: Quando você chama removeEmail(email):
  • A Subscription de email é removida do usuário atual.
  • O External ID atual é removido da Subscription de email.
  • Um novo OneSignal ID é atribuído à Subscription de email.
  • Outras Subscriptions (push, SMS, outros emails) permanecem inalteradas.
Boas práticas:
  • Chame login() primeiro, depois chame addEmail(). Caso contrário, o email pode ser anexado a um usuário anônimo.
  • Use um endereço de email estável e verificado.
  • Siga as Boas práticas de reputação de email.
JavaScript

addSms(), removeSms()

Adiciona ou remove uma Subscription SMS (número de telefone) para o usuário atual. Números de telefone devem ser fornecidos no formato E.164 (por exemplo, +15551234567). Estes métodos são compatíveis com Identity Verification. Quando você chama addSms(phoneNumber):
  • O número de telefone se torna uma Subscription SMS do usuário atual.
  • O número pode ser criado ou reatribuído.
  • O mesmo número de telefone não pode existir múltiplas vezes no mesmo app OneSignal. Se você vir números de telefone duplicados, verifique suas solicitações REST API e contate o suporte se necessário.
O SDK retorna os seguintes códigos de status HTTP: Quando você chama removeSms(phoneNumber):
  • A Subscription SMS é removida do usuário atual.
  • O External ID atual é removido da Subscription SMS.
  • Um novo OneSignal ID é atribuído à Subscription SMS.
  • Outras Subscriptions (push, email, outros SMS) permanecem inalteradas.
Boas práticas:
  • Chame login() primeiro, depois chame addSms(). Caso contrário, a Subscription SMS pode ser anexada a um usuário anônimo.
  • Sempre valide e normalize números de telefone para o formato E.164 antes de enviar.
  • Siga os Requisitos de registro de SMS.
JavaScript

Prompts Slidedown

Exiba os vários prompts slidedown em seus sites. Veja Prompts de permissão web para mais detalhes.
  • Se dispensado, chamadas futuras serão ignoradas por pelo menos três dias. Recusas adicionais aumentarão o tempo necessário a decorrer antes de solicitar o usuário novamente.
  • Para sobrescrever o comportamento de back-off, passe {force: true} para o método. No entanto, para fornecer uma boa experiência de usuário, vincule a ação a um evento iniciado pela UI, como um clique de botão.
Isso não substitui o Prompt Nativo do Navegador necessário para a subscription. Você deve obter permissões usando o prompt nativo do navegador.

promptPush()

Exibe o prompt slidedown regular para notificações push.
JavaScript

promptPushCategories()

Exibe o prompt slidedown de categorias, permitindo que os usuários atualizem suas tags. Também aciona o prompt de permissão de notificação nativo se o usuário ainda não concedeu permissão.
JavaScript

promptSms()

Exibe o prompt de subscription SMS.
JavaScript

promptEmail()

Exibe o prompt de subscription de email.
JavaScript

promptSmsAndEmail()

Exibe os prompts de subscription SMS e email simultaneamente.
JavaScript

addEventListener() Slidedown

Adicione um callback para detectar o evento de exibição do prompt Slidedown.
JavaScript

Notificações push

requestPermission()

Solicita permissão de notificações push via prompt nativo do navegador. Sujeito à lógica de backoff definida pelo navegador. Veja Prompts de permissão web para mais detalhes.
JavaScript

isPushSupported()

Retorna true se o navegador atual suportar web push.
JavaScript

OneSignal.Notifications.permission

Retorna um boolean indicando a permissão atual do site para exibir notificações.
  • true: O usuário concedeu permissão para exibir notificações.
  • false: O usuário negou ou ainda não concedeu permissão para exibir notificações.
Esse valor reflete apenas a permissão de notificação do navegador. Ele não reflete o optOut do OneSignal, o subscription ID ou o token push. Para esses, use User.PushSubscription (e os métodos relacionados abaixo). Para escutar mudanças de permissão, use o evento permissionChange.
JavaScript

addEventListener() Notifications

Você pode se conectar ao ciclo de vida da notificação com addEventListener. Substitua o primeiro argumento por um nome de evento como permissionChange, click ou dismiss (veja as subseções abaixo). Você pode registrar múltiplos handlers por evento. Para parar de escutar, chame removeEventListener com o mesmo nome de evento e a mesma referência de handler.
JavaScript

permissionChange

Este evento ocorre quando o usuário clica em Permitir ou Bloquear ou dispensa a solicitação de permissão nativa do navegador.
JavaScript

permissionPromptDisplay

Este evento ocorre quando a solicitação de permissão nativa do navegador acabou de ser mostrada.
JavaScript

click

Este evento disparará quando o corpo/título da notificação ou os botões de ação forem clicados.
JavaScript

foregroundWillDisplay

Este evento ocorre antes de uma notificação ser exibida. Este evento é disparado na sua página. Se múltiplas abas do navegador estiverem abertas no seu site, este evento será disparado em todas as páginas nas quais o OneSignal está ativo.
JavaScript

dismiss

Este evento ocorre quando:
  • Um usuário propositalmente dispensa a notificação sem clicar no corpo da notificação ou nos botões de ação
  • No Chrome no Android, um usuário dispensa todas as notificações web push (este evento será disparado para cada notificação web push que mostramos)
  • Uma notificação expira por conta própria e desaparece
Este evento não ocorre se um usuário clicar no corpo da notificação ou em um dos botões de ação. Isso é considerado um evento de click de notificação.
JavaScript

setDefaultUrl()

Define a URL padrão para notificações. Se você não definiu uma URL padrão, sua notificação abrirá na raiz do seu site por padrão.
JavaScript
Forneça uma URL válida para abrir quando o usuário clicar em uma notificação que não especifica sua própria URL. Se o payload da notificação incluir uma URL, ela sobrescreve este padrão. O Safari Web Push não usa setDefaultUrl() da mesma forma; o comportamento de abertura e do ícone segue sua configuração Safari / Apple (por exemplo, a Site URL nas suas configurações web do OneSignal). Veja Configuração do site.

setDefaultTitle()

Define o título padrão para exibir em notificações.
JavaScript
Se uma notificação for criada com um título, o título especificado sempre sobrescreve este título padrão. O título de uma notificação tem como padrão o título da página que o usuário visitou por último. Se os títulos das suas páginas variarem entre páginas, essa inconsistência pode ser indesejável. Chame isto para padronizar os títulos das páginas nas notificações, desde que um título de notificação não seja especificado.

Outcomes

Os métodos de outcome estão em OneSignal.Session. Use a mesma instância OneSignal deferred do restante da página após o init.

sendOutcome()

Aciona um outcome que pode ser visualizado no dashboard do OneSignal. Aceita um nome de outcome (string, obrigatório) e um valor (number, opcional). Cada vez que o método sendOutcome é invocado com o mesmo nome de outcome passado, a contagem do outcome aumentará, e o valor do outcome será aumentado pelo valor passado (se incluído). Veja Custom Outcomes para mais detalhes.
JavaScript

sendUniqueOutcome()

Aciona um outcome que pode ser visualizado no dashboard do OneSignal. Aceita apenas o nome do outcome (string, obrigatório). sendUniqueOutcome aumentará a contagem daquele outcome apenas uma vez por usuário. Veja Custom Outcomes para mais detalhes.
JavaScript