Pular para o conteúdo principal

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
Carrossel de onboarding mostrando tela de boas-vindas com imagem, texto e botão Próximo

Exemplo de carrossel de onboarding com navegação por botões

Use esta abordagem quando quiser:
  • 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:

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:
1

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)
2

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: 0 oculta o card visualmente, mas o mantém no layout
  • pointer-events: none impede cliques acidentais em cards ocultos
  • transition cria efeitos de fade suaves
3

Gerenciamento de estado JavaScript

A função setActive(i) controla qual card está visível:
Esta função:
  • Remove active de todos os cards
  • Adiciona active ao card de destino
  • Atualiza os pontos indicadores de progresso
4

Listeners de eventos dos botões

Os botões disparam navegação ou fechamento:
Importante: OneSignalIamApi.close(e) é o método do SDK OneSignal que fecha a Mensagem In-App de dentro do HTML.
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

  1. No painel do OneSignal, vá para Messages → In-App Messages
  2. Clique em New In-App Message
  3. Selecione HTML como tipo de mensagem
  4. Escolha o layout Full Screen ou Large (recomendado para onboarding para maximizar o impacto visual)
  5. 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

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('...')
Estilo visual:
  • 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-radius para botões e imagens

Adicionar mais etapas

Para adicionar uma terceira etapa, siga este padrão:
  1. Adicionar o card HTML:
  1. Adicionar um ponto de progresso:
  1. Atualizar a função setActive():
  1. Atualizar o ID do botão da etapa anterior: Altere id="done" para id="next-1" no botão do card 1, então adicione um listener de clique:
  1. Adicionar o botão de fechar ao novo último card (card-2):
Mantenha os fluxos de onboarding curtos (máximo de 2-4 etapas). Os usuários desistem rapidamente em fluxos mais longos. Teste as taxas de conclusão com rastreamento de cliques.

Etapa 4: Testar a Mensagem In-App

Lista de verificação de testes

  1. Salve a mensagem no painel do OneSignal
  2. 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
  3. 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)
  4. 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


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
Personalizar a experiência: Personalização avançada:
  • 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