Como reduzir cancelamentos numa app iOS sem esconder o botão de cancelar
O que a Apple permite às apps iOS quando alguém quer cancelar: a folha de gestão, mensagens de retenção, promotional offers, mudanças de plano e o que evitar.
No iOS, o botão de cancelar não é seu. Os clientes cancelam uma subscrição da App Store nas definições da sua Apple Account, e é a Apple que executa o cancelamento. Não pode bloqueá-lo, atrasá-lo nem pôr um labirinto à frente. O que pode fazer é ajudar o cliente que está prestes a sair a encontrar uma opção melhor, na sua app antes de chegar à página da Apple e, para alguns developers, no próprio ecrã de confirmação da Apple.
Este guia cobre as ferramentas que a Apple documenta para isso e um fluxo de cancelamento que as respeita. Baseia-se na documentação da Apple sobre showManageSubscriptions(in:), a Retention Messaging API, as promotional offers, a referência de notificationType e as App Review Guidelines (todas consultadas em novembro de 2026).
O que a Apple controla
- Onde acontece o cancelamento. A referência de notificações da Apple descreve o cancelamento como o cliente a cancelar “a partir da página de definições de Subscrições da App Store”. O seu servidor recebe então
DID_CHANGE_RENEWAL_STATUScom o subtypeAUTO_RENEW_DISABLED. - O que significa cancelar. A subscrição deixa de renovar. O cliente mantém o acesso até ao fim do período pago, e mais tarde recebe
EXPIREDcom o subtypeVOLUNTARY. - A folha na sua app. O
showManageSubscriptions(in:)do StoreKit (oumanageSubscriptionsSheetem SwiftUI) abre o mesmo ecrã de gestão que os clientes veem nas definições da conta, com as opções para ver, fazer upgrade, fazer downgrade ou cancelar. A Apple recomenda adicionar à sua app uma opção para gerir subscrições.
E as regras: a App Review Guideline 5.6 (Developer Code of Conduct) diz que as apps nunca devem “enganar” os clientes nem “recorrer a quaisquer outras práticas manipuladoras dentro ou fora da app”, e um comportamento manipulador repetido pode levar à sua exclusão do Developer Program. A Guideline 3.1.2(a) acrescenta que as apps de subscrição que “tentem enganar os utilizadores” ou usem práticas de bait-and-switch serão removidas. Um fluxo de cancelamento que esconde a saída é exatamente o que estas regras visam, para lá de qualquer lei de defesa do consumidor nos seus mercados.
Ferramenta 1: o seu próprio ecrã “Gerir subscrição”
Antes de abrir a folha da Apple, a sua app pode mostrar o seu próprio ecrã. É aqui que acontece a maior parte do trabalho de retenção, e controla-o por completo, desde que não atrapalhe.
Um padrão que respeita as regras:
- Um ecrã, uma pergunta. “Qual é o principal motivo para querer cancelar?” com quatro a seis respostas e um campo de texto livre.
- Uma resposta relevante para esse motivo. Demasiado caro: um plano mais barato ou um desconto. Não estou a usar: um lembrete do que perderia, ou um downgrade. Falta uma funcionalidade: uma forma de lho dizer, e uma resposta honesta sobre os planos.
- Um botão “Continuar para cancelar” visível em todas as etapas, que abre
showManageSubscriptions(in:). Com o mesmo tamanho e peso que o botão da oferta. Sem confirmação extra, sem contagem decrescente. - Pergunta opcional. O cliente pode ir diretamente para a folha da Apple sem responder.
A Apple não lhe envia o motivo do cancelamento; os campos de notificação que documenta para AUTO_RENEW_DISABLED não incluem nenhum. A resposta à sua própria pergunta é o único motivo que vai obter, por isso guarde-a com o cliente.
Ferramenta 2: ofertas que a Apple consegue realmente executar
No iOS, qualquer desconto ou mudança de plano tem de passar pelo StoreKit. Duas opções servem num fluxo de cancelamento.
Promotional offers
O guia da Apple diz que as promotional offers podem ser eficazes para “reter os subscritores atuais”. Cria-as no App Store Connect (até 10 ativas por subscrição), o seu servidor assina cada oferta e o cliente resgata-a na sua app. A Apple sugere até usar a notificação DID_CHANGE_RENEWAL_STATUS para decidir a elegibilidade, para que um cliente que acabou de desativar a renovação veja uma oferta da próxima vez que abrir a app.
Mudanças de plano dentro do grupo
Um downgrade é muitas vezes uma resposta melhor do que um desconto. Dentro de um grupo de subscrições, a referência de notificações da Apple diz que os downgrades produzem efeito na data de renovação seguinte e não afetam o plano atual, enquanto os upgrades produzem efeito de imediato, com reembolso proporcional do período não usado. Recebe DID_CHANGE_RENEWAL_PREF com o subtype DOWNGRADE ou UPGRADE. Um nível mais barato, ou uma mudança de mensal para um período mais longo, mantém o cliente a pagar alguma coisa.
Se quiser oferecer uma pausa, verifique o que a Apple suporta atualmente para o seu tipo de produto. A documentação usada para este guia descreve downgrades, promotional offers e mensagens de retenção, não uma opção de pausa.
Ferramenta 3: mensagens de retenção no próprio ecrã da Apple
A Retention Messaging API da Apple permite-lhe escolher uma mensagem mostrada depois de o cliente tocar em Cancel Subscription numa página de detalhes da subscrição. A Apple mostra então uma página Confirm Cancellation onde o cliente ainda pode cancelar, manter a subscrição ou, consoante a mensagem, resgatar uma oferta ou mudar de plano.
O que a Apple documenta:
- É uma API em pré-lançamento. Tem de pedir acesso.
- Quatro tipos de mensagem: texto (com marcadores opcionais), texto com imagem, uma mensagem de mudança de plano que sugere outra subscrição, e uma mensagem de promotional offer.
- Mensagens predefinidas por produto e por idioma, só em texto. Sem uma mensagem predefinida para um idioma, nada é mostrado nesse idioma.
- Mensagens em tempo real. O servidor da Apple chama o seu endpoint quando um subscritor ativo vê uma página de detalhes da subscrição com um botão Cancel, e escolhe uma mensagem pré-configurada, incluindo mensagens de oferta e de mudança de plano. As predefinidas servem de recurso se o seu servidor não responder. Antes de ir para produção, o seu endpoint tem de passar o teste de desempenho da Apple.
- Dispositivos: iOS e iPadOS 15.1 ou posterior, visionOS 1 ou posterior, macOS 14 ou posterior.
- A Apple pede-lhe que não carregue conteúdo enganador ou inexato.
É o mais próximo que existe no iOS de uma etapa de retenção dentro do próprio fluxo de cancelamento, e a Apple mantém o botão Cancel Subscription nessa página.
Depois de o cliente desativar a renovação
Uma renovação desativada ainda não é um cliente perdido. Entre AUTO_RENEW_DISABLED e EXPIRED, a subscrição continua ativa.
- Não corte o acesso antes do tempo. O cliente pagou pelo período.
- Mostre um banner discreto na app com a data de fim e uma forma de voltar a ativar a renovação (de novo a folha da Apple). Se o fizer, recebe
DID_CHANGE_RENEWAL_STATUScomAUTO_RENEW_ENABLED. - Use o tempo para uma mensagem relevante, com base no motivo indicado. Uma, não uma sequência.
- Prepare o pós-expiração. Quando a subscrição expirar, entram em cena as win-back offers da Apple.
Medir o que funciona
Acompanhe, por motivo e por oferta:
- Quantos clientes abriram o seu ecrã de gestão.
- Quantos aceitaram uma oferta ou mudaram de plano.
- Quantos continuaram para a folha da Apple.
- Quantos desativaram a renovação (a partir de
AUTO_RENEW_DISABLED), e quantos a voltaram a ativar. - A retenção duas ou três renovações depois, para quem aceitou uma oferta.
O último é o que mais conta. Um desconto que adia um cancelamento por um mês não é o mesmo que um cliente que fica.
O que evitar
- Esconder o link para as definições de subscrição da Apple, ou enterrá-lo debaixo de vários ecrãs.
- Fazer o botão da oferta grande e o link de cancelar pequeno e cinzento.
- Dizer aos clientes que têm de contactar o suporte para cancelar.
- Mostrar ofertas que o cliente não consegue realmente resgatar, ou prometer condições que o StoreKit não vai aplicar.
- Fazer a mesma pergunta ao mesmo cliente sempre que abre o ecrã.
Para os princípios gerais por trás de fluxos de cancelamento justos, veja as nossas boas práticas de fluxos de cancelamento e a visão geral das regras de click to cancel.
Fazer isto com o NoChurn
O fluxo de cancelamento do NoChurn está disponível como API headless, por isso a sua app iOS pode mostrar o seu próprio ecrã nativo: motivos, uma oferta (desconto, mudança de plano ou pausa onde a sua faturação o suportar) e um botão de cancelar sempre visível que abre as definições de subscrição da Apple. O cancelamento em si fica com a Apple. O NoChurn regista o motivo, lê as notificações AUTO_RENEW_DISABLED e EXPIRED para ver o que realmente aconteceu, e usa ambos para o score de churn e para a reconquista. A configuração está em NoChurn + App Store.