> ## Documentation Index
> Fetch the complete documentation index at: https://documentation.onesignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Configuração do Web SDK

> Adicione notificações web push do OneSignal ao seu website com o SDK JavaScript, configuração do service worker e configuração do dashboard.

export const SdkReleasesIframe = ({sdkFilter = undefined, viewMode = undefined, height, ...frameProps}) => {
  const baseUrl = 'https://onesignal.github.io/sdk-releases';
  const buildUrl = (theme, sdkFilter, viewMode) => {
    const url = new URL(baseUrl);
    const params = new URLSearchParams();
    if (theme) {
      params.set('theme', theme);
    }
    if (sdkFilter) {
      params.set('sdk', sdkFilter);
    }
    if (viewMode) {
      params.set('viewMode', viewMode);
    }
    if (params.toString()) {
      url.search = params.toString();
    }
    return url.toString();
  };
  const detectTheme = () => {
    if (document.documentElement.classList.contains('dark')) {
      return 'dark';
    }
    return 'light';
  };
  const [theme, setTheme] = useState('light');
  const [iframeSrc, setIframeSrc] = useState(() => {
    const initialTheme = detectTheme();
    return buildUrl(initialTheme, sdkFilter, viewMode);
  });
  useEffect(() => {
    const currentTheme = detectTheme();
    setTheme(currentTheme);
    setIframeSrc(buildUrl(currentTheme, sdkFilter, viewMode));
    const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');
    const handleThemeChange = () => {
      const newTheme = detectTheme();
      setTheme(newTheme);
      setIframeSrc(buildUrl(newTheme, sdkFilter, viewMode));
    };
    if (mediaQuery.addEventListener) {
      mediaQuery.addEventListener('change', handleThemeChange);
    } else {
      mediaQuery.addListener(handleThemeChange);
    }
    window.addEventListener('storage', handleThemeChange);
    const observer = new MutationObserver(handleThemeChange);
    observer.observe(document.documentElement, {
      attributes: true,
      attributeFilter: ['class', 'data-theme']
    });
    return () => {
      if (mediaQuery.removeEventListener) {
        mediaQuery.removeEventListener('change', handleThemeChange);
      } else {
        mediaQuery.removeListener(handleThemeChange);
      }
      window.removeEventListener('storage', handleThemeChange);
      observer.disconnect();
    };
  }, [sdkFilter, viewMode]);
  const getIframeHeight = () => {
    if (viewMode === 'table') {
      return '450';
    }
    if (viewMode === 'mini') {
      return '170';
    }
    return '800';
  };
  const iframeHeight = height || getIframeHeight();
  return <Frame {...frameProps}>
      <iframe src={iframeSrc} width="100%" height={iframeHeight} frameBorder="0" style={{
    border: "none"
  }} title="SDK Releases" key={iframeSrc} />
    </Frame>;
};

<SdkReleasesIframe sdkFilter="react,vue,vue3,angular,wordpress" viewMode="table" height="380" />

## Visão geral

Este guia orienta você na adição de notificações web push do OneSignal ao seu site — desde a configuração do dashboard até a instalação do SDK. OneSignal suporta Chrome, Firefox, Edge, Safari e [outros navegadores principais](./web-push-setup-faq).

***

## Requisitos

* Website HTTPS: Web push não funciona em HTTP ou em modos incógnito/privado.
* Acesso ao servidor: Você precisará fazer upload de um arquivo service worker para seu site.
* Origem única: Web push segue a [política de mesma origem](https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy). Se você tem múltiplas origens (domínios/subdomínios), precisará de múltiplos apps OneSignal (um por origem). Para cumprir com esta limitação do navegador, você pode:
  * Redirecionar tráfego para uma origem única para subscriptions.
  * Criar múltiplos apps OneSignal—um por origem.

<Note>
  Se sua equipe já criou uma conta com OneSignal, [peça para ser convidado como função de admin](./manage-team-members) para que possa configurar o app. Caso contrário, inscreva-se para uma conta gratuita em [onesignal.com](https://onesignal.com) para começar!
</Note>

***

## Configure seu app e plataforma OneSignal

No dashboard OneSignal:

* Vá para **Settings > Push & In-App > Web**.

<Frame caption="Ative a plataforma web nas suas configurações OneSignal">
  <img src="https://mintcdn.com/onesignal/KPVdijCt4_xCbkO8/images/dashboard/web-push-platform-activation.png?fit=max&auto=format&n=KPVdijCt4_xCbkO8&q=85&s=beba7df5d3a4ad5545311951da0f03d2" alt="Página de Configurações do dashboard OneSignal mostrando a ativação da plataforma Web" width="1188" height="597" data-path="images/dashboard/web-push-platform-activation.png" />
</Frame>

Selecione o tipo de integração:

<Columns cols={3}>
  <Card title="Site Típico (recomendado)">
    Gerencie prompts e configurações diretamente através do dashboard OneSignal sem codificação adicional.
  </Card>

  <Card title="WordPress" href="./wordpress" arrow={true}>
    Necessário se usando WordPress com nosso plugin oficial.
  </Card>

  <Card title="Código Personalizado" href="./web-push-custom-code-setup" arrow={true}>
    Para desenvolvedores que precisam de controle completo sobre prompts e configuração do SDK.
  </Card>
</Columns>

### Configuração do site

Adicione os detalhes do site:

* **Nome do Site**: O nome do seu site e título de notificação padrão.
* **URL do Site**: A URL do seu site. Veja [URL do Site](#site-url) para mais detalhes.
* **Auto Resubscribe**: Habilite isto para reinscrever automaticamente usuários que limpam seus dados de navegador quando retornam ao seu site (nenhum novo prompt de permissão necessário)
* **URL de Ícone Padrão**: Faça upload de uma imagem PNG ou JPG quadrada de 256x256px que aparece em notificações e prompts. Se não definido, usamos um sino para o ícone padrão.

<Frame caption="Configurações Web no dashboard OneSignal">
  <img src="https://mintcdn.com/onesignal/uaUYB-ILUGPSRvKB/images/docs/web-push-site-settings.png?fit=max&auto=format&n=uaUYB-ILUGPSRvKB&q=85&s=893a536c16cb4c439bc8fe53892861da" alt="Configuração de web push do OneSignal mostrando nome do site, URL e configurações de ícone" width="2072" height="712" data-path="images/docs/web-push-site-settings.png" />
</Frame>

#### URL do Site

Insira a [origem](https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy) exata do seu site, ex: `https://seudominio.com`. Evite usar `www.` se seu site não estiver configurado dessa forma.

Se você tem múltiplas origens:

* Redirecione para uma origem única.
* Ou configure um app OneSignal por origem.

#### Testes locais

Nosso web SDK pode ser testado em ambientes localhost. Se você está testando em localhost, recomendamos configurar um app OneSignal diferente do seu app de produção.

<Accordion title="Configuração de localhost" icon="circle-chevron-down">
  Defina a **URL DO SITE** para corresponder exatamente à URL do seu ambiente localhost. Deve ser uma URL localhost comum, exemplos:

  * `http://localhost`
  * `https://localhost:3000`
  * `http://127.0.0.1`
  * `https://127.0.0.1:5000`

  <Note>
    Se seu localhost está usando HTTP, selecione **Treat HTTP localhost as HTTPS for testing**.

    Google Chrome trata `http://localhost` e `http://127.0.0.1` como origens seguras, permitindo integrações HTTPS mesmo em HTTP. É por isso que você não pode testar outras origens não-padrão em HTTPS localhost.
  </Note>

  <Frame caption="Testes locais no dashboard OneSignal">
    <img src="https://mintcdn.com/onesignal/56ctKxZSV4m5VEkn/images/docs/b7f98cead1dcfb39b8887e66f61bb58649891b3cbfb5a051897391e5d324dc56-Screenshot_2024-10-25_at_1.53.11_PM.png?fit=max&auto=format&n=56ctKxZSV4m5VEkn&q=85&s=c46d81db4be53243526d961eba527b9c" alt="Configuração de localhost do OneSignal com a opção Treat HTTP localhost as HTTPS" width="2072" height="712" data-path="images/docs/b7f98cead1dcfb39b8887e66f61bb58649891b3cbfb5a051897391e5d324dc56-Screenshot_2024-10-25_at_1.53.11_PM.png" />
  </Frame>

  #### Adicione `allowLocalhostAsSecureOrigin` às suas opções `init` do OneSignal

  Ao inicializar OneSignal no seu site localhost, adicione `allowLocalhostAsSecureOrigin: true,` às suas opções `init` do OneSignal.

  Adicionalmente, se você está testando localhost em HTTPS com um certificado auto-assinado, pode ter que pedir ao Chrome para ignorar certificados inválidos para testes com: ` --allow-insecure-localhost`. Firefox e Safari fornecem mecanismos integrados para adicionar exceções para certificados de segurança.

  ```html theme={null}
    <script src="https://cdn.onesignal.com/sdks/web/v16/OneSignalSDK.page.js" defer></script>
    <script>
      window.OneSignalDeferred = window.OneSignalDeferred || [];
      OneSignalDeferred.push(function(OneSignal) {
        OneSignal.init({
          appId: "YOUR_OS_APP_ID",
          allowLocalhostAsSecureOrigin: true,
        });
      });
    </script>
  ```
</Accordion>

### Prompt de permissões

Configuração de site típico permite que você ou seus membros de equipe adicionem, removam e atualizem prompts de permissão através do dashboard OneSignal a qualquer momento.

<Card title="Prompts de permissão web" icon="bell" href="./permission-requests" arrow={true}>
  Configure quando e como o diálogo de permissão do navegador aparece para seus usuários.
</Card>

### Notificação de boas-vindas (opcional)

Você também pode definir uma notificação de boas-vindas para ser enviada aos usuários quando eles se inscrevem para notificações push.

### Configurações avançadas

Recursos adicionais configuráveis no dashboard OneSignal.

#### Webhooks

Nosso web SDK fornece a capacidade de fazer `POST` de certos eventos de web push para uma URL de sua escolha.

Web Push Webhooks são uma implementação separada de [Event Webhooks](./event-streams) e não podem ser usados de forma intercambiável.

<Card title="Webhooks de web push" icon="webhook" href="./webhooks">
  Envie eventos de web push para seu servidor via requisições POST.
</Card>

#### Service workers

Na próxima página de configuração de web push, você receberá o arquivo service worker `OneSignalSDKWorker.js`.

Nosso web SDK por padrão procura este arquivo na raiz do seu site. Se você quiser mudar a localização, nome e/ou escopo do nosso arquivo service worker, é aqui que você pode atualizar essas configurações.

* **Caminho para arquivos service worker** é o caminho para o diretório onde você colocará estes arquivos.
* **Nomes de arquivo service worker principal e atualizador** podem ser apenas `OneSignalSDKWorker.js` ou se você quiser renomear este arquivo. Deve usar extensão de arquivo `.js`.
* **Escopo de registro do service worker** são as páginas nas quais este arquivo pode funcionar. Para notificações push, isso não importa e foi originalmente projetado para casos onde você quer adicionar mais funcionalidade ao arquivo service worker. Você deve definir isso como o mesmo caminho da sua localização.

<Frame caption="Configuração de service worker">
  <img src="https://mintcdn.com/onesignal/0qspEXXeJ8zJbkJ-/images/docs/862419b594a5a0f7f77b8ed4199cae82d6db5d4d421024f6b553ca5b30e3ea00-Screenshot_2024-10-25_at_2.44.04_PM.png?fit=max&auto=format&n=0qspEXXeJ8zJbkJ-&q=85&s=13f219cd99022bdea5ecbdd2fb6a8f1c" alt="Campos de configuração de caminho, nome de arquivo e escopo do service worker" width="1214" height="566" data-path="images/docs/862419b594a5a0f7f77b8ed4199cae82d6db5d4d421024f6b553ca5b30e3ea00-Screenshot_2024-10-25_at_2.44.04_PM.png" />
</Frame>

Com este exemplo, você deve ver o código do arquivo publicamente acessível em `https://seudominio.com/push/onesignal/OneSignalSDKWorker.js`

<Card title="Service worker do OneSignal" icon="gear" href="./onesignal-service-worker">
  Configuração avançada do service worker, integração personalizada e migração de outros provedores.
</Card>

#### Comportamento de clique

Controle como usuários navegam para a [URL](./links) que você define quando clicam na notificação.

Se o usuário não tem seu site aberto em nenhuma aba, o navegador abre uma nova aba e navega para a URL da notificação. Se o usuário já tem seu site aberto, o comportamento depende da configuração que você escolher:

| Configuração                | Corresponde em                        | Ação                                                   |
| --------------------------- | ------------------------------------- | ------------------------------------------------------ |
| **Exact Navigate** (padrão) | URL exata (ex: `example.com/product`) | Navega para a URL da notificação na aba correspondente |
| **Origin Navigate**         | Origem (ex: `example.com`)            | Navega para a URL da notificação na aba correspondente |
| **Exact Focus**             | URL exata                             | Foca na aba correspondente sem recarregar              |
| **Origin Focus**            | Origem                                | Foca na aba correspondente sem recarregar              |

#### Persistência

O comportamento padrão de web push é que eles aparecem no dispositivo por aproximadamente 5 segundos antes de serem movidos para o Centro de Notificações onde são mantidos por cerca de 1 semana antes de serem removidos pelo sistema operacional.

Alguns dispositivos e versões do Chrome e Edge permitem persistir notificações por mais tempo na tela. Isso significa que a notificação ficará na tela até que o usuário interaja com ela. **Isso pode incomodar seus usuários e não é recomendado.** Além disso, se você habilitar persistência, afetará como notificações aparecem para inscritos reduzindo contagem de caracteres e pode afetar como imagens e botões são exibidos.

Ao mudá-las, elas entrarão em vigor apenas para inscritos que visitarem o site com as configurações atualizadas. Se você não vir estas opções mudarem, você precisará esperar

#### Certificado Safari (Opcional)

OneSignal fornece automaticamente os certificados necessários para funcionar com navegadores Safari sem custo adicional. Se você já tem seus próprios Certificados Safari Web Push, ative esta opção para fazer upload do seu `Safari Web .p12 Push Certificate` e senha.

<Frame caption="Configuração de certificado Safari">
  <img src="https://mintcdn.com/onesignal/RWtLFPeffHrC81wI/images/docs/a515412b69ecdd249c610e4e833cf3f1169b70b7a25075f5311c27bcc9b8ed10-Screenshot_2024-10-25_at_2.59.27_PM.png?fit=max&auto=format&n=RWtLFPeffHrC81wI&q=85&s=2dc2354ec6ec21a71f090cd63e5a149d" alt="Alternância e campos para upload do certificado Safari Web Push" width="1208" height="406" data-path="images/docs/a515412b69ecdd249c610e4e833cf3f1169b70b7a25075f5311c27bcc9b8ed10-Screenshot_2024-10-25_at_2.59.27_PM.png" />
</Frame>

***

## Fazer upload do arquivo service worker

Adicione o arquivo service worker `OneSignalSDKWorker.js` ao seu site. Baixe-o no dashboard do OneSignal ou [no GitHub](https://github.com/OneSignal/OneSignal-Website-SDK/files/11480764/OneSignalSDK-v16-ServiceWorker.zip).

<Frame caption="Passo de upload do arquivo service worker">
  <img src="https://mintcdn.com/onesignal/3zq1PvSaqvUE2bIx/images/docs/30d6d942cb4f6be59443b121ea226f50196995e56cb9e16586031475de66d15f-Screenshot_2024-10-25_at_3.54.04_PM.png?fit=max&auto=format&n=3zq1PvSaqvUE2bIx&q=85&s=f94e408fb2ecbfd3ecefda65e9839dd3" alt="Passo de download e configuração do arquivo service worker do OneSignal" width="1742" height="416" data-path="images/docs/30d6d942cb4f6be59443b121ea226f50196995e56cb9e16586031475de66d15f-Screenshot_2024-10-25_at_3.54.04_PM.png" />
</Frame>

Coloque este arquivo no diretório raiz do seu site ou em um subdiretório. Se você colocá-lo em um subdiretório, precisará definir o **Caminho para arquivos service worker** na seção [Configurações avançadas > Service workers](#service-workers).

Uma vez que o arquivo esteja no seu servidor, verifique o seguinte para garantir que funciona:

<Steps>
  <Step title="Verifique a localização">
    Certifique-se de que o arquivo está localizado no mesmo **Caminho para arquivos service worker** definido em [Configurações avançadas > Service workers](#service-workers). Se você não atualizou essas configurações, então você deve ter colocado o arquivo na sua raiz. Por exemplo:

    * `https://seudominio.com/OneSignalSDKWorker.js`
    * `https://seudominio.com/algum-subdiretorio/OneSignalSDKWorker.js`
  </Step>

  <Step title="Deve ser publicamente acessível na sua origem">
    O arquivo `OneSignalSDKWorker.js` deve ser publicamente acessível e disponível na sua origem. Não pode ser hospedado via CDN ou colocado em uma origem diferente com redirecionamento.

    Quando você visitar a URL para o arquivo, você deve ver o código.
  </Step>

  <Step title="Deve ser servido com content-type: application/javascript">
    Este é um arquivo javascript e precisa ser servido como tal. Não pode ter um content-type de text/html.
  </Step>
</Steps>

<Card title="Service worker do OneSignal" icon="gear" href="./onesignal-service-worker" arrow={true}>
  Configuração avançada e migração de outros provedores de web push.
</Card>

## Adicione código ao seu site

O código do JavaScript SDK abaixo funciona em qualquer site. Se seu site é construído com [Angular](./angular-setup), [React JS](./react-js-setup) ou [Vue JS](./vue-js-setup), siga esses links.

Para inicializar OneSignal no seu site com nosso JavaScript SDK, copie/cole o código fornecido nas tags `<head>` do seu website. O dashboard do OneSignal fornece o mesmo trecho pré-preenchido com seu [app ID](./keys-and-ids).

```javascript theme={null}
  <script src="https://cdn.onesignal.com/sdks/web/v16/OneSignalSDK.page.js" defer></script>
  <script>
    window.OneSignalDeferred = window.OneSignalDeferred || [];
    OneSignalDeferred.push(async function(OneSignal) {
      await OneSignal.init({
        appId: "YOUR_ONESIGNAL_APP_ID",
      });
    });
  </script>
```

### Suporte de web push para iOS

Apple começou a suportar notificações web push em iPhones e iPads rodando iOS 16.4+. Diferente de dispositivos Android onde web push simplesmente "funciona" desde que visitado em um navegador suportado, Apple adicionou alguns requisitos a mais como um arquivo `manifest.json` e uma ação do usuário para adicionar seu site à tela inicial deles.

<Card title="Configuração de Web Push para iOS" icon="apple" href="./web-push-for-ios">
  Adicione o arquivo `manifest.json` necessário e guie usuários a adicionar seu site à tela inicial deles.
</Card>

***

## Testando a integração do OneSignal SDK

Este guia ajuda você a verificar se sua integração do OneSignal SDK está funcionando corretamente testando notificações push e registro de inscrição.

### Verifique inscrições de web push

<Steps>
  <Step title="Inicie seu site em um dispositivo de teste.">
    * Use Chrome, Firefox, Edge ou Safari durante os testes.
    * **Não use modo Incógnito ou navegação privada.** Usuários não podem se inscrever em notificações push nestes modos.
    * Os prompts devem aparecer baseados na sua configuração de [permission prompts](/docs/pt-BR/permission-requests).
    * Clique em **Allow** no prompt nativo para se inscrever em notificações push.

    <Frame caption="Prompt de permissão nativo de web push">
      <img src="https://mintcdn.com/onesignal/FXJz6yFfOqztaEND/images/push/web-push-native-permission-prompt.png?fit=max&auto=format&n=FXJz6yFfOqztaEND&q=85&s=91c15dd6677de6a0ba37da20449ccca1" alt="Prompt de permissão nativo do navegador perguntando ao usuário se permite ou bloqueia notificações" width="1724" height="974" data-path="images/push/web-push-native-permission-prompt.png" />
    </Frame>
  </Step>

  <Step title="Verifique seu dashboard OneSignal">
    * Vá para **Audience > Subscriptions**.
    * Você deve ver uma nova entrada com o status **Subscribed**.

    <Frame caption="Dashboard mostrando inscrição com status 'Subscribed'">
      <img src="https://mintcdn.com/onesignal/KPVdijCt4_xCbkO8/images/dashboard/web-push-subscription-status.png?fit=max&auto=format&n=KPVdijCt4_xCbkO8&q=85&s=786e9c5e4131f01fef20d11bebd1a3d0" alt="Página de Inscrições do dashboard OneSignal mostrando uma inscrição de web push com status Subscribed" width="1188" height="742" data-path="images/dashboard/web-push-subscription-status.png" />
    </Frame>

    <Check>Você criou com sucesso uma [inscrição de web push](/docs/pt-BR/subscriptions).
    Inscrições de web push são criadas quando usuários se inscrevem pela primeira vez em notificações push no seu site.</Check>
  </Step>
</Steps>

### Configure inscrições de teste

Inscrições de teste são úteis para testar uma notificação push antes de enviar uma mensagem.

<Steps>
  <Step title="Adicione a Test Users.">
    No dashboard, próximo à inscrição, clique no botão **Options (três pontos)** e selecione **Add to Test Users**.

    <Frame caption="Adicionando um dispositivo a Test Users">
      <img src="https://mintcdn.com/onesignal/NCUI56Tiw7V-s0dT/images/dashboard/add-to-test-subscriptions.png?fit=max&auto=format&n=NCUI56Tiw7V-s0dT&q=85&s=2455d4cd74ea4ad686f76730cd95bbaa" alt="Menu de opções em uma inscrição mostrando a opção Adicionar a Test Users" width="1188" height="742" data-path="images/dashboard/add-to-test-subscriptions.png" />
    </Frame>
  </Step>

  <Step title="Nomeie sua inscrição.">
    Nomeie a inscrição para que você possa identificar facilmente seu dispositivo depois na **aba Test Users**.
  </Step>

  <Step title="Crie um segmento de usuários de teste.">
    Vá para **Audience > Segments > New Segment**.
  </Step>

  <Step title="Nomeie o segmento.">
    Nomeie o segmento `Test Users` (o nome é importante porque será usado depois).
  </Step>

  <Step title="Adicione o filtro Test Users e clique em Create Segment.">
    <Frame caption="Criando um segmento 'Test Users' com o filtro Test Users">
      <img src="https://mintcdn.com/onesignal/NCUI56Tiw7V-s0dT/images/dashboard/create-test-users-segment.png?fit=max&auto=format&n=NCUI56Tiw7V-s0dT&q=85&s=91b8a021be6e83662854e68ec3e1da04" alt="Editor de segmento com filtro Test Users selecionado e segmento nomeado Test Users" width="1188" height="742" data-path="images/dashboard/create-test-users-segment.png" />
    </Frame>

    <Check>Você criou com sucesso um segmento de usuários de teste.
    Agora podemos testar enviar mensagens para este dispositivo individual e grupos de usuários de teste.</Check>
  </Step>
</Steps>

### Envie push de teste via API

<Steps>
  <Step title="Obtenha seu App API Key e App ID.">
    No seu dashboard OneSignal, vá para **Settings > [Keys & IDs](/docs/pt-BR/keys-and-ids)**.
  </Step>

  <Step title="Atualize o código fornecido.">
    Substitua `YOUR_APP_API_KEY` e `YOUR_APP_ID` no código abaixo com suas chaves reais. Este código usa o segmento `Test Users` que criamos anteriormente.

    ```curl theme={null}
    curl -X \
    POST --url 'https://api.onesignal.com/notifications' \
     --header 'content-type: application/json; charset=utf-8' \
     --header 'authorization: Key YOUR_APP_API_KEY' \
     --data \
     '{
      "app_id": "YOUR_APP_ID",
      "target_channel": "push",
      "name": "Testing basic setup",
      "headings": {
      	"en": "👋"
      },
      "contents": {
        "en": "Hello world!"
      },
      "included_segments": [
        "Test Users"
      ],
      "chrome_web_image": "https://avatars.githubusercontent.com/u/11823027?s=200&v=4"
    }'
    ```
  </Step>

  <Step title="Execute o código.">
    Execute o código no seu terminal.
  </Step>

  <Step title="Verifique imagens e entrega confirmada.">
    Se todos os passos de configuração foram completados com sucesso, as inscrições de teste devem receber uma notificação.

    <Warning>Apenas Chrome suporta imagens. Imagens aparecerão pequenas na visualização de notificação recolhida. Expanda a notificação para ver a imagem completa.</Warning>

    <Frame caption="Notificação push expandida com imagem no Chrome macOS">
      <img src="https://mintcdn.com/onesignal/FXJz6yFfOqztaEND/images/push/web-push-image.png?fit=max&auto=format&n=FXJz6yFfOqztaEND&q=85&s=8dd90279daff9e24d3fd281e73aa1e74" alt="Notificação push expandida no Chrome macOS exibindo uma imagem personalizada" width="740" height="896" data-path="images/push/web-push-image.png" />
    </Frame>
  </Step>

  <Step title="Verifique por entrega confirmada.">
    No seu dashboard, vá para **Delivery > Sent Messages**, depois clique na mensagem para ver as estatísticas. Você deve ver a estatística **confirmed**, significando que o dispositivo recebeu o push.

    <Note>Safari não suporta Entrega Confirmada.</Note>

    <Card title="Relatórios de mensagens de notificação push" icon="chart-bar" href="/docs/pt-BR/push-notification-message-reports">
      Veja estatísticas de entrega, clique e conversão para suas notificações push.
    </Card>
  </Step>
</Steps>

<Check>Você enviou com sucesso uma notificação via API para um segmento.</Check>

Se as notificações não estiverem chegando, contate `support@onesignal.com` com o seguinte:

* A requisição e resposta da API (copie e cole em um arquivo `.txt`)
* Seu Subscription ID
* A URL do seu website com o código OneSignal

***

## Identificação de usuário

A seção anterior cobriu a criação de [Inscrições](/docs/pt-BR/subscriptions) de web push. Esta seção expande para identificar [Usuários](/docs/pt-BR/users) através de todas as suas inscrições (incluindo push, email e SMS) usando o OneSignal SDK. Cobre External IDs, tags, inscrições multicanal, privacidade e rastreamento de eventos para ajudá-lo a unificar e engajar usuários em todas as plataformas.

### Atribua External ID

Use um External ID para identificar usuários consistentemente através de dispositivos, endereços de email e números de telefone usando o identificador de usuário do seu backend. Isso garante que suas mensagens permaneçam unificadas através de canais e sistemas de terceiros (especialmente importante para [Integrações](/docs/pt-BR/integrations)).

Defina o External ID com o [método `login`](/docs/pt-BR/web-sdk-reference#login-external-id) do SDK cada vez que um usuário é identificado pelo seu app.

<Note>
  OneSignal gera IDs únicos somente leitura para inscrições (Subscription ID) e usuários (OneSignal ID).

  À medida que usuários baixam seu app em diferentes dispositivos, se inscrevem no seu website e/ou fornecem endereços de email e números de telefone fora do seu app, novas inscrições serão criadas.

  Definir o External ID via o SDK é altamente recomendado para identificar usuários através de todas as suas inscrições, independentemente de como elas são criadas.
</Note>

### Adicione Tags

[Tags](/docs/pt-BR/add-user-data-tags) são pares chave-valor de dados string que você pode usar para armazenar propriedades de usuário (como `username`, `role` ou preferências) e eventos (como `purchase_date`, `game_level` ou interações de usuário). Tags potencializam [Personalização de Mensagem](/docs/pt-BR/message-personalization) avançada e [Segmentação](/docs/pt-BR/segmentation) permitindo casos de uso mais avançados.

Defina tags com os [métodos `addTag` e `addTags`](/docs/pt-BR/web-sdk-reference#addtag-%2C-addtags) do SDK conforme eventos ocorrem no seu app.

Neste exemplo, o usuário alcançou o nível 6 identificável pela tag chamada `current_level` definida com um valor de `6`.

<Frame caption="Um perfil de usuário no OneSignal com uma tag chamada &#x22;current_level&#x22; definida como &#x22;6&#x22;">
  <img src="https://mintcdn.com/onesignal/4HyuQPBpu-4xjmQC/images/docs/d4674261847231079fecc176ba88065409c90943e3854b9df200457325a0aed4-Screenshot_2025-03-18_at_14.47.25.png?fit=max&auto=format&n=4HyuQPBpu-4xjmQC&q=85&s=91083bf83a4c03ea40d485b23f072259" width="1380" height="941" data-path="images/docs/d4674261847231079fecc176ba88065409c90943e3854b9df200457325a0aed4-Screenshot_2025-03-18_at_14.47.25.png" />
</Frame>

Podemos criar um segmento de usuários que têm um nível entre 5 e 10, e usar isso para enviar mensagens direcionadas e personalizadas:

<Frame caption="Editor de segmento mostrando um segmento direcionado a usuários com um valor current_level maior que 4 e menor que 10">
  <img src="https://mintcdn.com/onesignal/3zq1PvSaqvUE2bIx/images/docs/300d36b632a6f6d7017780457bbe2610b71767fd0db093c7611e59714dcbda5b-Screenshot_2025-03-18_at_14.49.56.png?fit=max&auto=format&n=3zq1PvSaqvUE2bIx&q=85&s=b84ab0d2c6eedbd6d4e7a2bf15afe103" width="1380" height="941" data-path="images/docs/300d36b632a6f6d7017780457bbe2610b71767fd0db093c7611e59714dcbda5b-Screenshot_2025-03-18_at_14.49.56.png" />
</Frame>

<br />

<Frame caption="Captura de tela mostrando uma notificação push direcionada ao segmento Nível 5-10 com uma mensagem personalizada">
  <img src="https://mintcdn.com/onesignal/tc0EvmtSSX56SX0c/images/docs/97e09b42d25c6d3f4c7cb0a6fff4dfb8893cbb4b283f7ff1f77977c33113319c-Screenshot_2025-03-18_at_14.55.47.png?fit=max&auto=format&n=tc0EvmtSSX56SX0c&q=85&s=c7839b12057d65a12a4eaddce6e2c11f" width="2764" height="2286" data-path="images/docs/97e09b42d25c6d3f4c7cb0a6fff4dfb8893cbb4b283f7ff1f77977c33113319c-Screenshot_2025-03-18_at_14.55.47.png" />
</Frame>

### Adicione inscrições de email e/ou SMS

O OneSignal SDK cria inscrições de web push automaticamente quando os usuários optam por receber. Você também pode alcançar usuários através de canais de email e SMS criando as inscrições correspondentes.

* Use o [método `addEmail`](/docs/pt-BR/web-sdk-reference#addemail-%2C-removeemail) para criar inscrições de email.
* Use o [método `addSms`](/docs/pt-BR/web-sdk-reference#addsms-%2C-removesms) para criar inscrições de SMS.

Se o endereço de email e/ou número de telefone já existem no app OneSignal, o SDK adicionará ao usuário existente, não criará duplicatas.

Você pode visualizar usuários unificados via **Audience > Users** no dashboard ou com a [API View user](/reference/view-user).

<Frame caption="Um perfil de usuário com inscrições push, email e SMS unificadas por External ID">
  <img src="https://mintcdn.com/onesignal/56ctKxZSV4m5VEkn/images/docs/b1cf9999d41da6e4ce333e1126612529b85eac47447bb0b434418d082f595acd-Screenshot_2025-03-18_at_14.43.46.png?fit=max&auto=format&n=56ctKxZSV4m5VEkn&q=85&s=7c3885b66e44e097fa0ed7c47f27c911" width="1506" height="848" data-path="images/docs/b1cf9999d41da6e4ce333e1126612529b85eac47447bb0b434418d082f595acd-Screenshot_2025-03-18_at_14.43.46.png" />
</Frame>

<Note>
  Melhores práticas para comunicação multicanal

  * Obtenha consentimento explícito antes de adicionar inscrições de email ou SMS.
  * Explique os benefícios de cada canal de comunicação aos usuários.
  * Forneça preferências de canal para que usuários possam selecionar quais canais eles preferem.
</Note>

***

### Privacidade e consentimento do usuário

Para controlar quando OneSignal coleta dados de usuário, use os métodos de controle de consentimento do SDK:

* [`setConsentRequired(true)`](/docs/pt-BR/web-sdk-reference#setconsentrequired): Previne coleta de dados até que consentimento seja dado.
* [`setConsentGiven(true)`](/docs/pt-BR/web-sdk-reference#setconsentgiven): Habilita coleta de dados uma vez que consentimento é concedido.

Para mais sobre privacidade e segurança:

<Columns cols={2}>
  <Card title="Dados coletados pelo SDK" icon="database" href="/docs/pt-BR/data-collected-by-the-onesignal-sdk">
    Revise quais dados o OneSignal SDK coleta dos usuários.
  </Card>

  <Card title="Tratamento de dados pessoais" icon="shield-halved" href="/docs/pt-BR/handling-personal-data">
    Gerencie e proteja dados de usuários em conformidade com regulamentações de privacidade.
  </Card>
</Columns>

***

## Escute eventos de push, usuário e in-app

Use listeners do SDK para reagir a ações de usuário e mudanças de estado.

O SDK fornece vários event listeners para você conectar. Veja nosso [guia de referência do SDK](/docs/pt-BR/web-sdk-reference) para mais detalhes.

### Eventos de notificação push

* [Click event listener](/docs/pt-BR/web-sdk-reference#click): Detecte quando uma notificação é tocada.
* [Foreground lifecycle listener](/docs/pt-BR/web-sdk-reference#foregroundwilldisplay): Controle como notificações se comportam em foreground.

### Mudanças de estado do usuário

* [User state change event listener](/docs/pt-BR/web-sdk-reference#addeventlistener-user-state): Detecte quando o External ID é definido.
* [Permission observer](/docs/pt-BR/web-sdk-reference#permissionchange): Rastreie a interação específica do usuário com o prompt de permissão push nativo.
* [Push subscription change observer](/docs/pt-BR/web-sdk-reference#addeventlistener-push-subscription-changes): Rastreie quando o status de inscrição push muda.

***

## Configuração avançada e capacidades

Explore mais capacidades para melhorar sua integração:

<Columns cols={3}>
  <Card title="Migrando para o OneSignal" icon="rotate" href="/docs/pt-BR/migrating-to-onesignal">
    Migre de outro provedor de push para o OneSignal.
  </Card>

  <Card title="Integrações" icon="plug" href="/docs/pt-BR/integrations">
    Conecte o OneSignal com ferramentas e plataformas de terceiros.
  </Card>

  <Card title="Botões de ação" icon="bell" href="/docs/pt-BR/action-buttons">
    Adicione botões interativos às notificações push.
  </Card>

  <Card title="Mensagens multilíngues" icon="globe" href="/docs/pt-BR/multi-language-messaging">
    Envie mensagens localizadas aos usuários no idioma de sua preferência.
  </Card>

  <Card title="Verificação de Identidade" icon="shield-check" href="/docs/pt-BR/identity-verification">
    Proteja sua integração do SDK com verificação de identidade no servidor.
  </Card>

  <Card title="Custom Outcomes" icon="chart-line" href="/docs/pt-BR/custom-outcomes">
    Rastreie eventos de conversão personalizados vinculados às suas mensagens.
  </Card>
</Columns>

### Configuração e referência do Web SDK

<Columns cols={2}>
  <Card title="Configuração de web push" icon="gear" href="/docs/pt-BR/web-push-setup">
    Habilite todos os recursos principais de web push para sua integração.
  </Card>

  <Card title="Referência do Web SDK" icon="code" href="/docs/pt-BR/web-sdk-reference">
    Detalhes completos sobre métodos disponíveis e opções de configuração.
  </Card>
</Columns>

<Check>Parabéns! Você completou com sucesso o guia de configuração do Web SDK.</Check>

***

***

## FAQ

### O web push funciona em sites HTTP?

Não. O web push requer HTTPS. Os navegadores impõem isso como requisito de segurança. A única exceção é `localhost` e `127.0.0.1`, que os navegadores tratam como origens seguras para fins de desenvolvimento.

### Por que preciso de um arquivo service worker?

O service worker é executado em segundo plano e lida com notificações push recebidas mesmo quando o usuário não tem seu site aberto. Sem ele, o navegador não consegue exibir notificações. O arquivo `OneSignalSDKWorker.js` deve ser publicamente acessível na sua origem.

### Posso usar web push no iOS (iPhone/iPad)?

Sim, a partir do iOS 16.4+. No entanto, a Apple exige um arquivo `manifest.json` e o usuário deve adicionar seu site à tela inicial primeiro. Veja [Configuração de web push para iOS](./web-push-for-ios) para os requisitos completos.

### Por que minhas notificações não estão aparecendo?

Causas comuns incluem um arquivo service worker colocado incorretamente, uma URL do Site incompatível no dashboard, ou o usuário ter notificações bloqueadas nas configurações do navegador. Veja [Notificações exibidas com sucesso mas não sendo mostradas](./notifications-show-successful-but-are-not-being-shown) para uma lista completa de solução de problemas.

***

<Info>
  Precisa de ajuda?

  Converse com nossa equipe de Suporte ou envie email para `support@onesignal.com`

  Por favor inclua:

  * Detalhes do problema que você está enfrentando e passos para reproduzir se disponível
  * Seu OneSignal App ID
  * O External ID ou Subscription ID se aplicável
  * A URL para a mensagem que você testou no Dashboard OneSignal se aplicável
  * Quaisquer [logs ou mensagens de erro](/docs/pt-BR/capturing-a-debug-log) relevantes

  Estamos felizes em ajudar!
</Info>

***
