Pular para o conteúdo

Primer de push para iOS

Um primer de push é um diálogo de opt-in que você exibe antes do prompt de permissão de push do sistema iOS. O iOS mostra o prompt do sistema apenas uma vez por instalação — se o usuário tocar em Não Permitir, o push é perdido até que ele o reative nos Ajustes. O primer permite que você explique o valor primeiro e pergunte no momento certo, para que você use o prompt do sistema de uma única vez em usuários que já disseram sim.

Disponível desde a versão 7.1.1. O primer faz parte do PushwooshFramework; nenhum módulo extra é necessário.

Diálogo do primer de push exibido antes do prompt de permissão do sistema
Primer de push exibido antes do prompt de permissão do sistema iOS

Como funciona

Anchor link to

O primer é totalmente ciente do estado. Ele lê o status atual de autorização de notificação e decide o que fazer, então é seguro chamá-lo a cada inicialização:

  • Não determinado — mostra o primer; ao aceitar, ele aciona o prompt de permissão do sistema.
  • Autorizado ou provisório — suprime silenciosamente o primer (nada é mostrado).
  • Negado — mostra o primer; ao aceitar, ele direciona o usuário para as configurações de notificação do aplicativo (quando fallbackToSettings está ativado).

Você decide quando chamar o primer (por exemplo, após a integração ou após uma ação chave). O SDK não impõe nenhum tempo próprio, exceto pelo limitador opcional minInterval descrito abaixo.

Uso básico

Anchor link to

Configure o primer com um construtor fluente e chame present. A configuração mínima precisa de um título, uma mensagem e os títulos dos dois botões.

import PushwooshFramework
Pushwoosh.configure.pushPrimer
.title("Fique por dentro")
.message("Seja o primeiro a ser notificado sobre ofertas e atualizações de pedidos")
.acceptButton("Ativar notificações")
.declineButton("Agora não")
.present()

Estilos e posições

Anchor link to

Use style para escolher entre um alerta do sistema e uma folha personalizada, e position para posicionar a folha personalizada. Cada posição tem seu próprio design padrão.

ValorDescrição
.alertUIAlertController do sistema. A posição é ignorada.
.sheet + .bottomFolha inferior que desliza para cima, com um agarrador e botões de largura total (padrão).
.sheet + .topBanner compacto que desce do topo, como uma notificação.
.sheet + .centerDiálogo centralizado que escala e aparece gradualmente.
Pushwoosh.configure.pushPrimer
.style(.sheet)
.position(.top)
.title("Fique por dentro")
.message("Seja o primeiro a ser notificado sobre ofertas e atualizações de pedidos")
.acceptButton("Ativar notificações")
.declineButton("Agora não")
.present()
Primer de push nas posições inferior, superior e central

Personalização

Anchor link to

Todas as configurações visuais são opcionais — omita-as para usar os padrões nativos que se adaptam aos modos claro e escuro.

Pushwoosh.configure.pushPrimer
.style(.sheet)
.position(.center)
.title("Fique por dentro")
.message("Seja o primeiro a ser notificado sobre ofertas e atualizações de pedidos")
.acceptButton("Ativar notificações")
.declineButton("Agora não")
.image(UIImage(named: "PrimerHero")) // imagem local, ou .imageURL("https://…")
.backgroundColor(.systemBackground)
.titleColor(.label)
.messageColor(.secondaryLabel)
.acceptButtonColor(.systemBlue)
.acceptButtonTextColor(.white)
.declineButtonColor(.clear)
.declineButtonTextColor(.secondaryLabel)
.cornerRadius(24)
.buttonCornerRadius(14)
.buttonBorderColor(.separator)
.present()

Referência de personalização:

SetterDescrição
image / imageURLUm UIImage local ou uma URL remota. Renderizado como um círculo nos layouts central e inferior, e como o ícone no banner superior. Uma imagem local tem precedência sobre uma URL.
backgroundColorCor de fundo sólida do cartão.
backgroundGradientUm array de cores renderizado como um gradiente suave de várias cores. Substitui backgroundColor.
titleColor / messageColorCores do texto do título e da mensagem.
acceptButtonColor / acceptButtonTextColorCores de fundo e de texto do botão de aceitar. A cor de aceitar também tinge o ícone padrão.
declineButtonColor / declineButtonTextColorCores de fundo e de texto do botão de recusar.
cornerRadiusRaio do canto do cartão.
buttonCornerRadius / buttonBorderColorRaio do canto e cor da borda de ambos os botões.

Configurações de comportamento

Anchor link to

Fallback para Ajustes

Anchor link to

Por padrão, quando as notificações já estão negadas, o primer é mostrado e o botão de aceitar leva o usuário para as configurações de notificação do aplicativo. Passe false para suprimir completamente o primer no estado negado.

.fallbackToSettings(false)

Frequência de exibição

Anchor link to

Por padrão, o primer não tem limitação de frequência integrada — ele é exibido sempre que você chama present (e é suprimido automaticamente assim que as notificações são autorizadas). Use minInterval para limitar a frequência com que o primer reaparece. A última vez que foi exibido é persistida entre as inicializações.

.minInterval(7 * 24 * 60 * 60) // mostrar no máximo uma vez por semana

Lidando com o resultado

Anchor link to

Passe uma conclusão para present para reagir ao resultado.

Pushwoosh.configure.pushPrimer
.title("Fique por dentro")
.message("Seja o primeiro a ser notificado sobre ofertas e atualizações de pedidos")
.acceptButton("Ativar notificações")
.declineButton("Agora não")
.present { outcome in
switch outcome {
case .accepted: break // exibido, usuário aceitou, prompt do sistema solicitado
case .declined: break // exibido, usuário recusou
case .suppressed: break // não exibido (já autorizado ou limitado)
case .redirectedToSettings: break // estado negado, usuário enviado para Ajustes
@unknown default: break
}
}

O resultado final do prompt do sistema (o estado concedido/negado e o token do dispositivo) chega através dos callbacks de registro regulares — o primer reutiliza registerForPushNotifications ao aceitar e não duplica essa cadeia.

Referências

Anchor link to