Configuração & debugging
Você pode precisar envolver as chamadas OneSignal emOneSignalDeferred.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.
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
'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 chamandologin() 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 Conflictno 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.
- Você pode ver um
- O
onesignal_idatual é descartado e oonesignal_idexistente 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.
external_id não existir:
- Um novo usuário é criado usando o
onesignal_idatual. - 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.
- 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.
- 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
loginantes 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_idda Subscription web push atual. Não remove oexternal_idde outras Subscriptions. - Redefine o
onesignal_idpara 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
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
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_idcomlogin()antes de adicionar aliases. Aliases adicionados a subscriptions semexternal_idnã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.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.
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 personalizadoskey : 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()ourequiresUserPrivacyConsentestiver definido comotrue, nosso SDK não será totalmente habilitado atésetConsentGivenser chamado comtrue. - Se
setConsentGivenestiver definido comotruee uma Subscription for criada, e depois for definido comofalse, aquela Subscription não receberá mais atualizações. Os dados atuais daquela Subscription permanecem inalterados atésetConsentGivenser definido comotruenovamente. - 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
optedInmuda (ex.: chamouoptIn()ouoptOut()) - O usuário alterna a permissão push nas configurações do navegador ou do SO e depois retorna ao seu site
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.removeEventListener() com a mesma referência de handler que você passou para addEventListener().
JavaScript
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
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:- Se a Subscription tiver um token push válido, define o status de subscription push atual como
subscribed. - Se a Subscription não tiver um token push válido, tenta exibir o prompt de permissão push.
- Se a Subscription tiver um token push válido, define o status de subscription push atual como
optedIn: Retornatruese o status de subscription push atual for subscribed, caso contráriofalse. Se o token push for válido masoptOut()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.
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.
- Chame
login()primeiro, depois chameaddEmail(). 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.
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.
- Chame
login()primeiro, depois chameaddSms(). 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.
promptPush()
Exibe o prompt slidedown regular para notificações push.
- Se estiver usando categorias, chame
promptPushCategories()em vez disso. - Sujeito à lógica de backoff definida pelo OneSignal. Veja Prompts de permissão web para mais detalhes.
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.
- Se não estiver usando categorias, chame
promptPush()em vez disso. - Sujeito à lógica de backoff definida pelo OneSignal. Veja Prompts de permissão web para mais detalhes.
JavaScript
promptSms()
Exibe o prompt de subscription SMS.
- Sujeito à lógica de backoff definida pelo OneSignal. Veja Prompts de permissão web para mais detalhes.
JavaScript
promptEmail()
Exibe o prompt de subscription de email.
- Sujeito à lógica de backoff definida pelo OneSignal. Veja Prompts de permissão web para mais detalhes.
JavaScript
promptSmsAndEmail()
Exibe os prompts de subscription SMS e email simultaneamente.
- Sujeito à lógica de backoff definida pelo OneSignal. Veja Prompts de permissão web para mais detalhes.
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.
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
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
Outcomes
Os métodos de outcome estão emOneSignal.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