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