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.
Visão geral
Este tutorial mostra como criar um carrossel de onboarding de várias etapas usando uma única Mensagem In-App HTML. Ao contrário dos carrosséis tradicionais que dependem de gestos de deslizar, esta abordagem usa navegação por botões e mantém todas as etapas dentro de uma única mensagem. O que você vai construir:- Um fluxo de onboarding de duas etapas com imagens, texto e botões
- Navegação por botões (toque em “Próximo” para avançar, toque em “Começar” para fechar)
- Pontos indicadores de progresso
- Transições suaves de fade entre as etapas

- Guiar os usuários através de um fluxo curto de onboarding ou educação (2-5 etapas)
- Exigir que os usuários toquem explicitamente em um botão para continuar (sem gestos de deslizar)
- Manter tudo dentro de uma única Mensagem In-App HTML para simplificar
- Fechar a mensagem automaticamente quando o fluxo for concluído
Este guia usa uma Mensagem In-App HTML para controle total. Você também pode construir fluxos de onboarding baseados em cards com o editor de arrastar e soltar—esses cards são deslizáveis, mas oferecem menos personalização.
Pré-requisitos
Antes de começar, certifique-se de ter:- Um aplicativo OneSignal ativo com Mensagens In-App habilitadas
- Permissão para criar ou editar Mensagens In-App HTML
- Mobile SDK instalado em seu aplicativo móvel
- Conhecimento básico de HTML, CSS e JavaScript
Como funciona o fluxo de várias etapas
Antes de mergulhar no código, é importante entender a abordagem técnica. Esta implementação usa uma única Mensagem In-App HTML que alterna entre etapas mostrando e ocultando conteúdo, não carregando múltiplas mensagens separadas. A arquitetura depende de quatro componentes principais:Contêineres de card para cada etapa
Cada etapa é envolvida em um
<div> com a classe card e um ID único:- Todos os cards existem simultaneamente no DOM
- Apenas um card é visível por vez (controlado pela classe
active)
Controle de visibilidade CSS
O CSS lida com a lógica de mostrar/ocultar usando opacidade e eventos de ponteiro:Por que isso importa:
opacity: 0oculta o card visualmente, mas o mantém no layoutpointer-events: noneimpede cliques acidentais em cards ocultostransitioncria efeitos de fade suaves
Gerenciamento de estado JavaScript
A função Esta função:
setActive(i) controla qual card está visível:- Remove
activede todos os cards - Adiciona
activeao card de destino - Atualiza os pontos indicadores de progresso
Ponto-chave: Este é um padrão de aplicação de página única (SPA) dentro de uma Mensagem In-App. Todo o conteúdo é carregado uma vez, e o JavaScript gerencia as mudanças de estado sem recarregar.
Etapa 1: Criar uma nova Mensagem In-App HTML
- No painel do OneSignal, vá para Messages → In-App Messages
- Clique em New In-App Message
- Selecione HTML como tipo de mensagem
- Escolha o layout Full Screen ou Large (recomendado para onboarding para maximizar o impacto visual)
- Continue para o editor HTML
A visualização do editor HTML pode não refletir totalmente o comportamento em tempo de execução. Sempre teste em um dispositivo real ou usuário de teste para verificar animações, comportamento dos botões e a ação de fechar.
Etapa 2: Adicionar o template HTML
Substitua o conteúdo do editor pelo template abaixo. Este template inclui:- Código autocontido: Todo HTML, CSS e JavaScript em um arquivo
- Navegação por botões: Sem gestos de deslizar (mais confiável em diferentes dispositivos)
- Transições de fade: Mudanças suaves de opacidade entre etapas
- Integração com SDK OneSignal: Usa
OneSignalIamApi.close(e)para fechar a mensagem - Otimizado para mobile: Layout responsivo com meta tag viewport
Ver template HTML completo
Ver template HTML completo
Etapa 3: Personalizar seu conteúdo
Seguro para personalizar
Você pode modificar estes elementos sem quebrar a funcionalidade: Conteúdo:- Texto do título nas tags
<h1> - Texto do corpo nas tags
<p> - Rótulos dos botões (
Próximo,Começar) - URLs de imagens nos estilos
background-image: url('...')
- Cores: Altere o fundo do
.btn, cor do texto ou cores dos pontos - Espaçamento: Ajuste padding e margens
- Tipografia: Modifique font-family, font-size, font-weight
- Raio de borda: Atualize valores de
border-radiuspara botões e imagens
Adicionar mais etapas
Para adicionar uma terceira etapa, siga este padrão:- Adicionar o card HTML:
- Adicionar um ponto de progresso:
- Atualizar a função
setActive():
- Atualizar o ID do botão da etapa anterior:
Altere
id="done"paraid="next-1"no botão do card 1, então adicione um listener de clique:
- Adicionar o botão de fechar ao novo último card (card-2):
Etapa 4: Testar a Mensagem In-App
Lista de verificação de testes
- Salve a mensagem no painel do OneSignal
- Configure os ajustes de entrega:
- Defina condições de gatilho (ex.: início de sessão, visualização de página específica)
- Escolha seu público-alvo ou selecione um usuário de teste
- Envie para um dispositivo de teste:
- Use Usuários de Teste para visualizar sem afetar usuários de produção
- Instale seu app em um dispositivo físico (recomendado em vez de simuladores para comportamento preciso)
- Verifique a funcionalidade:
- ✓ O primeiro card aparece com o conteúdo correto
- ✓ O botão “Próximo” avança para o card 2
- ✓ Os pontos de progresso atualizam corretamente
- ✓ As transições de fade são suaves
- ✓ O botão “Começar” fecha a mensagem
- ✓ A mensagem não reaparece imediatamente (verifique as configurações de limite de frequência)
Simuladores/emuladores podem não refletir com precisão o comportamento do dispositivo real, especialmente para interações de toque e integrações de SDK. Sempre teste em dispositivos físicos antes de lançar em produção.
Resolução de problemas comuns
| Problema | Causa provável | Solução |
|---|---|---|
| Mensagem não aparece | Condições de gatilho não atendidas | Verifique os Gatilhos de Mensagens In-App e confirme que seu usuário de teste atende aos critérios |
| Botões não funcionam | Erros de JavaScript ou incompatibilidade de ID | Verifique o console do navegador por erros; confirme que os IDs dos botões correspondem aos IDs dos listeners de eventos |
| Imagens não carregam | Problemas de CORS ou URLs inválidas | Use URLs HTTPS; teste as URLs das imagens em um navegador primeiro |
| Mensagem aparece mas não fecha | SDK do OneSignal não carregado | Verifique se a configuração do Mobile SDK está completa |
Próximos passos
Rastrear engajamento dos usuários:- Adicione rastreamento de cliques usando atributos
data-onesignal-unique-label(já incluídos no template) para medir desistência entre etapas - Veja análises de cliques em Messages → In-App Messages → [Sua Mensagem] → Analytics
- Marque usuários que completam o onboarding (ex.:
onboarding_completed: true) - Use tags para segmentar usuários e evitar reexibir o fluxo de onboarding
- Adicione dados de usuário para personalizar conteúdo em mensagens futuras
- Deep link usuários para uma tela específica após o fechamento
- Use sintaxe Liquid para personalizar títulos com nomes de usuários ou atributos
- Implemente testes A/B com diferentes fluxos de onboarding para otimizar taxas de conclusão