> ## 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.

# Web SDK - Configuração com Código Personalizado

> Guia completo para configurar notificações Web Push do OneSignal usando integração com código personalizado. Configure o SDK JavaScript, service workers e certificados Safari para Chrome, Firefox, Safari e outros navegadores web.

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" />

<Warning>
  Use esta configuração com Código Personalizado apenas se você precisar de configuração avançada ou controle programático. Para a maioria dos usuários, recomendamos:

  * [Configuração Típica de Web Push](./web-push-setup)
  * [Configuração WordPress](./wordpress)
  * [Configuração Shopify](./shopify)
</Warning>

Se você estiver usando um framework JavaScript, siga estes guias especializados:

* [Configuração Angular](./angular-setup)
* [Configuração React JS](./react-js-setup)
* [Configuração Vue JS](./vue-js-setup)

## Requisitos

* Site com HTTPS: O push web não funciona em HTTP ou em modos de navegação anônima/privada.
* Acesso ao servidor: Você precisará fazer upload de um arquivo service worker para o seu site.
* Origem única: O push web segue a [política de mesma origem](https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy). Se você tiver múltiplas origens (domínios/subdomínios), precisará de múltiplos apps OneSignal (um por origem). Para cumprir essa limitação do navegador, você pode:
  * Redirecionar o tráfego para uma única origem para inscrições.
  * Criar múltiplos apps OneSignal, um por origem.

***

## Configurar seu app e plataforma OneSignal

No dashboard do OneSignal:

* Acesse **Settings > Push & In-App > Web**.
* Selecione o tipo de integração **Custom Code**.

### Configuração do site

Adicione os detalhes do site:

* **Site Name**: O nome do seu site e o título de notificação padrão.
* **Site URL**: A [origem](https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy) exata do seu site, por exemplo `https://yourdomain.com`. Evite usar `www.` se o seu site não estiver configurado dessa forma. Consulte os [Requisitos](#requirements) se você tiver múltiplas origens.
* **Auto Resubscribe**: Habilite isso para reinscrever automaticamente os usuários que limpam os dados do navegador quando retornam ao seu site (sem nova solicitação de permissão).
* **Default Icon URL**: Faça upload de uma imagem PNG ou JPG quadrada de `256x256px` que aparece em notificações e prompts. Se não definida, um ícone de sino é usado como padrão.

<Frame caption="Configurações Web no dashboard do 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="OneSignal web push configuration showing site name, URL, and icon settings" width="2072" height="712" data-path="images/docs/web-push-site-settings.png" />
</Frame>

#### Testes locais

Para testar no localhost, use um app OneSignal separado do seu app de produção e adicione `allowLocalhostAsSecureOrigin: true` às suas opções de `init`.

Se você estiver testando localhost em HTTPS com um certificado autoassinado, pode ser necessário dizer ao Chrome para ignorar certificados inválidos 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>
```

### Certificado Safari web push (opcional)

O OneSignal fornece certificados Safari automaticamente sem custo. Habilite isso apenas se você tiver certificados Safari Web Push existentes que precisa usar.

<Frame caption="Opção de upload de certificado Safari para certificados existentes">
  <img src="https://mintcdn.com/onesignal/uaUYB-ILUGPSRvKB/images/docs/web-push-safari-cert.png?fit=max&auto=format&n=uaUYB-ILUGPSRvKB&q=85&s=a7bbe7cac04c5b2b90988b67f6abc38c" alt="Safari certificate upload option" width="1876" height="882" data-path="images/docs/web-push-safari-cert.png" />
</Frame>

Se habilitado, faça upload do seu `Safari Web .p12 Push Certificate` e insira a senha.

Clique em **Save** para continuar.

### Upload de arquivos service worker

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

O SDK web procura esse arquivo na raiz do seu site por padrão, por exemplo `https://yourdomain.com/OneSignalSDKWorker.js`. Você pode alterar o local, o nome e o escopo do arquivo no código.

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

### Adicionar código ao site

Adicione este código à seção `<head>` do seu site. Substitua:

* `YOUR_ONESIGNAL_APP_ID` pelo seu App ID real do dashboard do OneSignal
* `YOUR_SAFARI_WEB_ID` pelo seu Safari Web ID real do dashboard do OneSignal

```html HTML 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",
      safari_web_id: "YOUR_SAFARI_WEB_ID",
      notifyButton: {
        enable: true,
      },
    });
  });
</script>
```

### Suporte a push web no iOS

A Apple começou a oferecer suporte a notificações push web em iPhones e iPads com iOS 16.4+. Ao contrário dos dispositivos Android onde o push web simplesmente "funciona" ao acessar em um navegador compatível, a Apple adicionou alguns requisitos extras, como um arquivo `manifest.json` e uma ação do usuário para adicionar seu site à tela inicial.

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

***

***

## Perguntas frequentes

### Preciso de HTTPS para notificações push web?

Sim. Todos os navegadores modernos exigem HTTPS para suporte a notificações push. Se o seu site usa HTTP, você deve migrar para HTTPS antes de configurar o push web.

### Posso usar esta configuração com uma aplicação de página única (SPA)?

Sim. A configuração Custom Code é a abordagem recomendada para SPAs construídas com frameworks como React, Angular ou Vue. Consulte os guias específicos por framework no [topo desta página](#) para [Angular](./angular-setup), [React](./react-js-setup) e [Vue](./vue-js-setup).

### O que acontece se um usuário limpar os dados do navegador?

A inscrição push do usuário é removida. Se **Auto Resubscribe** estiver habilitado, ele será reinscrito automaticamente na próxima vez que visitar seu site.

***

## Páginas relacionadas

<Columns cols={2}>
  <Card title="Solicitações de permissão" icon="bell" href="./permission-requests">
    Configure quando e como os usuários são solicitados a se inscrever.
  </Card>

  <Card title="Referência do Web SDK" icon="code" href="./web-sdk-reference">
    Referência completa da API para o Web SDK do OneSignal.
  </Card>
</Columns>
