Solicitação de instalação PWA: O momento em que um usuário é convidado a instalar um Progressive Web App (PWA) é um ponto de conversão crítico, conhecido como “Install Prompt”. No entanto, a exibição desse convite não deve ser passiva, mas sim uma experiência contextualizada e controlada pelo desenvolvedor.
Para isso, os navegadores modernos disparam o evento beforeinstallprompt, que permite que você cancele o prompt nativo e o dispare em um momento mais oportuno e persuasivo.
1. 🛑 Interceptando o Evento beforeinstallprompt
O navegador só dispara esse evento quando o PWA já atende a todos os critérios de elegibilidade (Manifest, Service Worker, HTTPS, etc.). Ao interceptá-lo, você impede que a caixa de diálogo nativa apareça imediatamente, ganhando controle total sobre a experiência.
Armazenando o Evento
O segredo é armazenar o objeto do evento (deferredPrompt) para chamá-lo posteriormente, quando o seu botão de instalação personalizado for clicado.
JavaScript
let deferredPrompt;
// 1. Ouve o evento disparado pelo navegador
window.addEventListener('beforeinstallprompt', (event) => {
// Impede o prompt nativo de aparecer imediatamente
event.preventDefault();
// 2. Armazena o evento para uso posterior
deferredPrompt = event;
// 3. Exibe o seu botão/elemento de instalação personalizado
showInstallButton();
});
2. 🖱️ Disparando o Prompt de Instalação (UX Customizada)
Com o evento armazenado, você pode associá-lo a um elemento de interface do usuário personalizado (#install-button), garantindo que o prompt seja exibido apenas quando o usuário demonstrar interesse (clicando no botão).
O prompt() e userChoice
Ao clicar no botão personalizado, você chama o método prompt() e, em seguida, usa a Promise userChoice para rastrear o resultado:
JavaScript
const installButton = document.getElementById('install-button');
installButton.addEventListener('click', () => {
// Verifica se o evento está disponível
if (deferredPrompt) {
// 1. Dispara o prompt nativo do navegador
deferredPrompt.prompt();
// 2. Rastreia a escolha do usuário
deferredPrompt.userChoice.then((choiceResult) => {
if (choiceResult.outcome === 'accepted') {
console.log('O usuário aceitou a instalação.');
} else {
console.log('O usuário rejeitou a instalação.');
}
// 3. O prompt não será exibido novamente até a próxima navegação
deferredPrompt = null;
hideInstallButton();
});
}
});
3. 🎯 Otimizando o Momento (Onde Enviar o Comando)
O sucesso da instalação depende de você convidar o usuário no momento de maior engajamento ou valor percebido. Evite pop-ups intrusivos no carregamento da página.
| Estratégia | Momento Ideal | Por que Funciona? |
| Pós-Engajamento | Após a segunda ou terceira visita, ou após 5 minutos de uso. | Garante que o usuário já conhece e valoriza o PWA. |
| Pós-Conversão | Após uma ação de valor (ex: concluir uma compra, salvar um item favorito, publicar um post). | O usuário acabou de obter valor e está propenso a aprofundar o relacionamento. |
| Explicitação | Em um menu lateral ou página “Sobre” do app. | Permite que usuários proativos encontrem a opção sem interrupção. |
4. 📊 Coleta de Análises e Fallback
A customização do prompt permite rastrear a eficácia da sua estratégia de instalação e fornecer feedback caso a instalação não ocorra.
A. Análise de Dados
Utilize a Promise userChoice para enviar dados para ferramentas de análise (Google Analytics, etc.). É crucial rastrear:
- Taxa de Aceitação vs. Rejeição: A métrica mais importante para avaliar a qualidade da sua mensagem.
- Contexto de Instalação: Se o usuário aceitou o prompt em uma página específica ou após uma ação específica.
B. Mecanismos de Fallback
Se o navegador não disparar o evento beforeinstallprompt (geralmente no iOS, onde o controle é limitado, ou em navegadores que não suportam o evento), você deve instruir o usuário.
- iOS Fallback: Exiba um elemento de interface que instrui o usuário a usar o botão Compartilhar do Safari e, em seguida, a opção “Adicionar à Tela de Início”.
- Mensagem de Rejeição: Se
choiceResult.outcomefor'dismissed', você pode mostrar uma mensagem amigável de Fallback ou um lembrete sutil que pode ser reativado mais tarde, respeitando a decisão do usuário.
✅ Conclusão
Solicitação de instalação PWA: O evento beforeinstallprompt transforma a instalação de PWAs de um evento passivo do navegador em uma experiência de conversão controlada e otimizada por você. Ao interceptar e armazenar o evento, você ganha a capacidade de dispará-lo em um momento tático (pós-engajamento ou pós-conversão), maximizando as chances de o usuário aceitar a instalação e transformar-se em um usuário altamente engajado e fiel.
Toda jornada tem um início, e o início para se tornar um desenvolvedor web é dominar as seguintes tecnologias, que você encontra aqui mesmo:
E se você gosta do nosso conteúdo, não deixe de contribuir adquirindo os serviços e produtos dos nossos apoiadores e empresas que somos associados:













