Widget de assinatura
O widget de assinatura é um aviso e um sino de lançamento que convidam os visitantes do site a se inscreverem para receber notificações push, configurados juntos como subscriptionWidget, mas ativados de forma independente: só o aviso, só o sino, ou ambos ao mesmo tempo. Ativar qualquer um dos dois substitui o botão de inscrição para Push, o Popup de Inscrição Personalizado e os widgets de solicitação de assinatura — enquanto pelo menos uma das partes estiver ativada, nenhum desses três widgets mais antigos é carregado na página.
Um visitante que ainda não decidiu vê o pedido do aviso. Um visitante que já bloqueou notificações vê, em vez disso, uma explicação de como desbloqueá-las.
Pré-requisitos
Anchor link toCertifique-se de ter implementado o Pushwoosh Web SDK 3.0 em seu site. Para isso, siga nosso guia de integração.
1. Ativar o aviso e o sino
Anchor link toAdicione o parâmetro subscriptionWidget à inicialização do WebSDK e defina prompt.enabled e/ou launcher.enabled como true:
Pushwoosh.push(['init', { //... subscriptionWidget: { prompt: { enabled: true }, launcher: { enabled: true }, }}]);Todos os campos abaixo são opcionais. Um campo omitido usa seu valor padrão. No snippet de inicialização, um número fora do intervalo é silenciosamente limitado ao limite mais próximo, e um valor de enum inválido volta silenciosamente ao seu padrão, sem aviso no console. Os formulários do Painel de Controle descritos mais adiante validam cada campo e se recusam a salvar um valor inválido.
2. Configurar o aviso e o sino
Anchor link toPushwoosh.push(['init', { //... subscriptionWidget: { prompt: { enabled: true, layout: 'card', // 'card' | 'bar' | 'modal' position: 'bottom-right', iconUrl: 'https://url-image.png', borderRadius: 12, // 0–32 overlay: false, }, launcher: { enabled: true, position: 'bottom-right', // 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right' offset: 20, // 0–100 width: 48, // 16–200 height: 48, // 16–200 imageUrl: 'https://url-image.png', background: '#4285f4', iconColor: '#ffffff', }, display: { trigger: 'auto', // 'auto' | 'launcher' | 'manual' delay: 5, // seconds, 0–3600 cappingCount: 3, // auto-shows per visitor, 0–100, 0 = unlimited cappingInterval: 24, // hours between auto-shows, 0–8760 }, texts: { title: 'Stay in the loop', message: 'Get notified about news and updates.', acceptText: 'Allow', declineText: 'Not now', closeText: 'Close', blockedTitle: 'Notifications are blocked', blockedMessage: 'Enable notifications in your browser settings to stay updated.', launcherLabel: 'Subscribe to notifications', launcherBlockedLabel: 'Notifications are blocked', }, colors: { background: '#ffffff', accent: '#4285f4', text: '#000000', textSecondary: '#666666', }, }}]);Layout e posição
Anchor link toprompt.layout define o formato do aviso:
card— um cartão compacto ancorado a uma borda ou canto.prompt.positionaceitatop,bottom,top-left,top-right,bottom-leftoubottom-right.bar— uma barra que ocupa toda a largura da página.prompt.positionaceita apenastopoubottom.modal— uma janela centralizada na página.prompt.positioné semprecenter.
Consulte a lista acima para saber qual layout você definiu antes de escolher uma posição. No snippet de inicialização, uma posição não suportada pelo layout atual é silenciosamente substituída pelo padrão do layout. O formulário do Painel de Controle rejeita essa combinação em vez disso.
Quando exibir o aviso
Anchor link todisplay.trigger controla o que abre o aviso:
auto— abre automaticamentedisplay.delaysegundos após o carregamento da página, depois novamente a cadadisplay.cappingIntervalhoras se o visitante não decidiu, atédisplay.cappingCountvezes no total (0significa sem limite).launcher— nunca abre por temporizador. Defina junto comlauncher.enabled: truepara que um clique no sino possa abri-lo. A API manual o abre de qualquer forma, independentemente desta configuração ou de o sino estar ativado.manual— abre apenas através dePushwoosh.moduleRegistry.subscriptionWidget, descrito abaixo.
display.delay, display.cappingCount e display.cappingInterval aplicam-se apenas ao gatilho auto.
O sino de lançamento
Anchor link tolauncher.enabled exibe um sino flutuante para um visitante que ainda pode agir sobre o pedido (ainda não inscrito, ou bloqueado), independentemente do aviso e de display.trigger. O sino permanece na tela enquanto o aviso está aberto. launcher.position o posiciona em um dos quatro cantos. launcher.offset define sua distância das bordas, em pixels.
O efeito de um clique no sino depende do aviso. Se prompt.enabled for true, o clique alterna o aviso: abre-o ou, se já estiver aberto, fecha-o. Se o aviso estiver desativado, o clique solicita a permissão diretamente ao navegador, como Pushwoosh.subscribe() — a menos que o visitante já tenha bloqueado as notificações; nesse caso, o clique não faz nada.
launcher.width e launcher.height definem o tamanho do sino em pixels (16–200, padrão 48 cada). launcher.imageUrl desenha uma imagem no lugar do botão redondo do sino. launcher.background e launcher.iconColor definem a cor de preenchimento e a cor do glifo do botão redondo. Se não forem definidos, launcher.background usa por padrão a cor de destaque da paleta, e launcher.iconColor uma cor de glifo calculada para contrastar com ela.
Textos e cores
Anchor link totexts.blockedTitle, texts.blockedMessage e texts.closeText são exibidos no lugar do pedido assim que o navegador relata que o visitante bloqueou as notificações — texts.acceptText e texts.declineText nunca aparecem nesse estado. texts.launcherLabel e texts.launcherBlockedLabel são a dica de ferramenta do sino em cada estado. Cada campo de texto aceita até 300 caracteres.
colors.accent, colors.background, colors.text e colors.textSecondary aceitam um valor hexadecimal ou um nome de cor CSS. Os formulários do Painel de Controle validam cada um deles, e também launcher.background/launcher.iconColor, dessa forma, até 64 caracteres. O snippet de inicialização aceita qualquer string não vazia para colors.* sem verificar formato ou comprimento. Para launcher.background/launcher.iconColor, não verifica nenhum dos dois, mas corta silenciosamente o valor em 64 caracteres.
Gerenciando-o no Painel de Controle
Anchor link toEm um aplicativo gerenciado pelo painel, vá para Settings → Configure platforms → Web. O aviso e o sino são dois cartões separados ali, cada um com seu próprio selo On/Off e botão Configure:
- Subscription invitation edita o aviso: Invitation (layout, posição, ícone), When to show (gatilho, atraso, limite de exibições), Texts e Colors.
- Subscription bell edita o sino de lançamento: posição, URL da imagem, largura/altura, cor de fundo e do ícone, e seus próprios textos de dica de ferramenta.
O botão Configure de cada cartão abre uma prévia ao vivo ao lado do formulário. A prévia não desenha nada enquanto o interruptor do próprio cartão estiver desativado. Depois de ativado, um menu suspenso acima da prévia alterna entre o pedido para o visitante indeciso e a explicação para o visitante bloqueado. Salvar um cartão substitui apenas a sua metade da cópia da configuração do widget no painel — as configurações do outro cartão e o snippet de inicialização do WebSDK em seu site não são afetados.
Enquanto um aplicativo estiver gerenciado pelo painel, os valores salvos em qualquer um dos cartões substituem as mesmas chaves no snippet de inicialização do site.
3. Controlar o aviso a partir do seu código
Anchor link toAssim que o pacote do widget for carregado, ele publica uma API em Pushwoosh.moduleRegistry.subscriptionWidget:
Pushwoosh.moduleRegistry.subscriptionWidget.show(); // Opens the promptPushwoosh.moduleRegistry.subscriptionWidget.hide(); // Closes the promptPushwoosh.moduleRegistry.subscriptionWidget.toggle(); // Toggles the current statePushwoosh.moduleRegistry.subscriptionWidget.toggle(true); // Opens the promptPushwoosh.moduleRegistry.subscriptionWidget.isVisible(); // Returns whether the prompt is openshow() e toggle() não têm efeito enquanto prompt.enabled for false, nem para um visitante que já se inscreveu. Abrir o aviso dispara um evento show-subscription-widget. Fechá-lo dispara hide-subscription-widget:
Pushwoosh.addEventHandler('show-subscription-widget', function() { console.log('Triggered event: show-subscription-widget');});
Pushwoosh.addEventHandler('hide-subscription-widget', function() { console.log('Triggered event: hide-subscription-widget');});Migrando dos widgets antigos
Anchor link toO botão de inscrição para Push, o Popup de Inscrição Personalizado e a solicitação de assinatura continuam funcionando conforme documentado em suas próprias páginas enquanto subscriptionWidget.prompt.enabled e subscriptionWidget.launcher.enabled do site permanecerem ambos indefinidos ou false. Ativar qualquer um dos dois interrompe o carregamento dos três, tanto em um aplicativo configurado por snippet quanto em um gerenciado pelo painel.