Réduire les résiliations dans une app iOS sans cacher le bouton d’annulation
Ce qu’Apple permet aux apps iOS quand un abonné veut résilier : feuille de gestion, messages de rétention, promotional offers, changements d’offre, pièges.
Sur iOS, le bouton d’annulation ne vous appartient pas. Les clients résilient un abonnement App Store dans les réglages de leur compte Apple, et c’est Apple qui l’exécute. Vous ne pouvez ni le bloquer, ni le retarder, ni placer un labyrinthe devant. Ce que vous pouvez faire, c’est aider le client sur le point de partir à trouver une meilleure option, dans votre app avant qu’il n’arrive sur la page d’Apple et, pour certains développeurs, sur l’écran de confirmation d’Apple lui-même.
Ce guide couvre les outils qu’Apple documente pour cela, et un parcours d’annulation qui les respecte. Il s’appuie sur la documentation d’Apple pour showManageSubscriptions(in:), la Retention Messaging API, les promotional offers, la référence notificationType et les App Review Guidelines (tous consultés en novembre 2026).
Ce qu’Apple contrôle
- L’endroit où l’on résilie. La référence des notifications d’Apple décrit la résiliation comme le fait que le client résilie « depuis la page de réglages Subscriptions de l’App Store ». Votre serveur reçoit alors
DID_CHANGE_RENEWAL_STATUSavec le subtypeAUTO_RENEW_DISABLED. - Ce que signifie résilier. L’abonnement cesse de se renouveler. Le client garde l’accès jusqu’à la fin de la période payée, et vous recevez plus tard
EXPIREDavec le subtypeVOLUNTARY. - La feuille dans votre app.
showManageSubscriptions(in:)de StoreKit (oumanageSubscriptionsSheeten SwiftUI) ouvre le même écran de gestion que celui des réglages du compte, avec les options pour voir, passer à une offre supérieure ou inférieure, ou résilier. Apple recommande d’ajouter une option de gestion des abonnements à votre app.
Et les règles : la règle 5.6 des App Review Guidelines (Developer Code of Conduct) dit que les apps ne doivent jamais « tromper » les clients ni « se livrer à d’autres pratiques manipulatrices dans l’app ou en dehors », et qu’un comportement manipulateur répété peut vous faire exclure du Developer Program. La règle 3.1.2(a) ajoute que les apps d’abonnement qui « tentent de tromper les utilisateurs » ou pratiquent l’appât et le leurre seront retirées. Un parcours d’annulation qui cache la sortie est exactement ce que visent ces règles, au-delà de toute loi de protection des consommateurs sur vos marchés.
Outil 1 : votre propre écran « Gérer l’abonnement »
Avant d’ouvrir la feuille d’Apple, votre app peut afficher son propre écran. C’est là que se fait l’essentiel du travail de rétention, et vous le maîtrisez entièrement, tant qu’il ne fait pas obstacle.
Un modèle qui respecte les règles :
- Un écran, une question. « Quelle est la principale raison de votre résiliation ? » avec quatre à six réponses et un champ de texte libre.
- Une réponse pertinente à cette raison. Trop cher : une offre moins chère ou une remise. Je ne m’en sers pas : un rappel de ce qu’il perdrait, ou une offre inférieure. Fonctionnalité manquante : un moyen de vous le dire, et une réponse honnête sur les offres.
- Un bouton « Continuer la résiliation » visible à chaque étape, qui ouvre
showManageSubscriptions(in:). Même taille et même poids que le bouton de l’offre. Pas de confirmation en plus, pas de compte à rebours. - Une question facultative. Le client peut aller directement à la feuille d’Apple sans répondre.
Apple ne vous envoie pas de raison de résiliation ; les champs de notification documentés pour AUTO_RENEW_DISABLED n’en contiennent pas. La réponse à votre propre question est la seule raison que vous aurez, donc enregistrez-la avec le client.
Outil 2 : des offres qu’Apple peut réellement appliquer
Sur iOS, toute remise ou tout changement d’offre doit passer par StoreKit. Deux options conviennent à un parcours d’annulation.
Promotional offers
Le guide d’Apple dit que les promotional offers peuvent être efficaces pour « retenir les abonnés actuels ». Vous les créez dans App Store Connect (jusqu’à 10 actives par abonnement), votre serveur signe chaque offre et le client l’utilise dans votre app. Apple suggère même d’utiliser la notification DID_CHANGE_RENEWAL_STATUS pour décider de l’éligibilité, afin qu’un client qui vient de désactiver le renouvellement voie une offre à sa prochaine ouverture de l’app.
Changements d’offre dans le groupe
Passer à une offre inférieure est souvent une meilleure réponse qu’une remise. Dans un groupe d’abonnements, la référence des notifications d’Apple indique que les passages à une offre inférieure prennent effet à la prochaine date de renouvellement et ne touchent pas l’offre en cours, tandis que les passages à une offre supérieure prennent effet immédiatement avec un remboursement au prorata de la période non utilisée. Vous recevez DID_CHANGE_RENEWAL_PREF avec le subtype DOWNGRADE ou UPGRADE. Un palier moins cher, ou un passage du mensuel à une période plus longue, fait que le client continue de payer quelque chose.
Si vous voulez proposer une pause, vérifiez ce qu’Apple prend en charge aujourd’hui pour votre type de produit. La documentation utilisée pour ce guide décrit les passages à une offre inférieure, les promotional offers et les messages de rétention, pas d’option de pause.
Outil 3 : des messages de rétention sur l’écran d’Apple
La Retention Messaging API d’Apple vous permet de choisir un message affiché après que le client a touché Cancel Subscription sur une page de détails d’abonnement. Apple affiche ensuite une page Confirm Cancellation où le client peut toujours résilier, garder l’abonnement ou, selon le message, utiliser une offre ou changer d’offre.
Ce qu’Apple documente :
- C’est une API en pré-version. Vous devez en demander l’accès.
- Quatre types de messages : texte (avec puces facultatives), texte avec image, un message de changement d’offre qui suggère un autre abonnement, et un message de promotional offer.
- Des messages par défaut par produit et par langue, en texte seulement. Sans message par défaut pour une langue, rien ne s’y affiche.
- Des messages en temps réel. Le serveur d’Apple appelle votre endpoint quand un abonné actif consulte une page de détails d’abonnement avec un bouton Cancel, et vous choisissez un message préconfiguré, y compris les messages d’offre et de changement d’offre. Les messages par défaut servent de repli si votre serveur ne répond pas. Avant la production, votre endpoint doit réussir le test de performance d’Apple.
- Appareils : iOS et iPadOS 15.1 ou plus, visionOS 1 ou plus, macOS 14 ou plus.
- Apple vous demande de ne pas téléverser de contenu trompeur ou inexact.
C’est ce qui se rapproche le plus, sur iOS, d’une étape de rétention dans le parcours d’annulation lui-même, et Apple garde le bouton Cancel Subscription sur cette page.
Après que le client a désactivé le renouvellement
Un renouvellement désactivé n’est pas encore un client perdu. Entre AUTO_RENEW_DISABLED et EXPIRED, l’abonnement est toujours actif.
- Ne coupez pas l’accès plus tôt. Il a payé la période.
- Affichez un bandeau discret dans l’app avec la date de fin et un moyen de réactiver le renouvellement (encore la feuille d’Apple). S’il le fait, vous recevez
DID_CHANGE_RENEWAL_STATUSavecAUTO_RENEW_ENABLED. - Profitez du temps pour un message pertinent, selon la raison donnée. Un seul, pas une séquence.
- Préparez l’après-expiration. Une fois l’abonnement expiré, les win-back offers d’Apple prennent le relais.
Mesurer ce qui marche
Suivez, par raison et par offre :
- Combien de clients ont ouvert votre écran de gestion.
- Combien ont accepté une offre ou changé d’offre.
- Combien ont continué jusqu’à la feuille d’Apple.
- Combien ont désactivé le renouvellement (depuis
AUTO_RENEW_DISABLED), et combien l’ont réactivé. - La rétention deux ou trois renouvellements plus tard pour ceux qui ont accepté une offre.
C’est le dernier qui compte le plus. Une remise qui retarde une résiliation d’un mois n’est pas la même chose qu’un client qui reste.
Ce qu’il faut éviter
- Cacher le lien vers les réglages d’abonnement d’Apple, ou l’enfouir sous plusieurs écrans.
- Faire un gros bouton d’offre et un petit lien d’annulation gris.
- Dire aux clients qu’ils doivent contacter le support pour résilier.
- Montrer des offres que le client ne peut pas réellement utiliser, ou promettre des conditions que StoreKit n’appliquera pas.
- Poser au même client la même question à chaque ouverture de l’écran.
Pour les principes généraux d’un parcours d’annulation loyal, voir nos bonnes pratiques du parcours d’annulation et la vue d’ensemble des règles click-to-cancel.
Le faire avec NoChurn
Le parcours d’annulation de NoChurn est disponible en API headless, donc votre app iOS peut afficher son propre écran natif : raisons, une offre (remise, changement d’offre ou pause là où votre facturation le permet) et un bouton d’annulation toujours visible qui ouvre les réglages d’abonnement d’Apple. La résiliation elle-même reste chez Apple. NoChurn enregistre la raison, lit les notifications AUTO_RENEW_DISABLED et EXPIRED pour voir ce qui s’est réellement passé, et utilise les deux pour le score de churn et la reconquête. La mise en place est sur NoChurn + App Store.