Pular para o conteúdo

Pré-solicitação de push para iOS

Uma pré-solicitação de push é uma caixa de diálogo de opt-in suave que você exibe antes da solicitação de permissão de push do sistema iOS. O iOS exibe a solicitação 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. A pré-solicitação permite que você explique o valor primeiro e pergunte no momento certo, para que você use a única chance da solicitação do sistema com usuários que já disseram sim.

Disponível desde a versão 7.1.1. A pré-solicitação faz parte do PushwooshFramework; nenhum módulo extra é necessário.

Caixa de diálogo de pré-solicitação de push exibida antes da solicitação de permissão do sistema
Pré-solicitação de push exibida antes da solicitação de permissão do sistema iOS

Como funciona

Anchor link to

A pré-solicitação é totalmente ciente do estado. Ela lê o status atual de autorização de notificação e decide o que fazer, então é seguro chamá-la a cada inicialização:

  • Não determinado — exibe a pré-solicitação; ao aceitar, aciona a solicitação de permissão do sistema.
  • Autorizado ou provisório — suprime silenciosamente a pré-solicitação (nada é exibido).
  • Negado — exibe a pré-solicitação; ao aceitar, encaminha o usuário para as configurações de notificação do aplicativo (quando fallbackToSettings está ativado).

Você decide quando chamar a pré-solicitação (por exemplo, após a integração do usuário ou após uma ação principal). O SDK não impõe nenhum tempo próprio, exceto pela limitação opcional minInterval descrita abaixo.

Uso básico

Anchor link to

Configure a pré-solicitação 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("Receba notificações sobre ofertas e atualizações de pedidos primeiro")
.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 puxador e botões de largura total (padrão).
.sheet + .topBanner compacto que desce do topo, como uma notificação.
.sheet + .centerCaixa de diálogo centralizada que aumenta de escala e aparece gradualmente.
Pushwoosh.configure.pushPrimer
.style(.sheet)
.position(.top)
.title("Fique por dentro")
.message("Receba notificações sobre ofertas e atualizações de pedidos primeiro")
.acceptButton("Ativar notificações")
.declineButton("Agora não")
.present()
Pré-solicitação 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("Receba notificações sobre ofertas e atualizações de pedidos primeiro")
.acceptButton("Ativar notificações")
.declineButton("Agora não")
.image(UIImage(named: "PrimerHero")) // local image, or .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 um URL remoto. Renderizado como um círculo nos layouts central e inferior, e como o ícone no banner superior. Uma imagem local tem precedência sobre um URL.
backgroundColorCor de fundo sólida do cartão.
backgroundGradientUm array de cores renderizado como um gradiente suave multicolorido. Sobrescreve backgroundColor.
titleColor / messageColorCores do texto do título e da mensagem.
acceptButtonColor / acceptButtonTextColorCores de fundo e do texto do botão de aceitar. A cor de aceitar também tinge o ícone padrão.
declineButtonColor / declineButtonTextColorCores de fundo e do 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, a pré-solicitação é exibida e o botão de aceitar leva o usuário para as configurações de notificação do aplicativo. Passe false para suprimir completamente a pré-solicitação no estado negado.

.fallbackToSettings(false)

Frequência de exibição

Anchor link to

Por padrão, a pré-solicitação não tem limitação integrada — ela é exibida sempre que você chama present (e é suprimida automaticamente assim que as notificações são autorizadas). Use minInterval para limitar a frequência com que a pré-solicitação reaparece. A última vez que foi exibida é mantida entre as inicializações.

.minInterval(7 * 24 * 60 * 60) // show at most once a week

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("Receba notificações sobre ofertas e atualizações de pedidos primeiro")
.acceptButton("Ativar notificações")
.declineButton("Agora não")
.present { outcome in
switch outcome {
case .accepted: break // shown, user accepted, system prompt requested
case .declined: break // shown, user declined
case .suppressed: break // not shown (already authorized, or throttled)
case .redirectedToSettings: break // denied state, user sent to Settings
@unknown default: break
}
}

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

Referências

Anchor link to