Report: State of in-app subscriptions in the US 2023 Get a report

Achats intégrés sous iOS, partie 5 : liste des codes SKError et comment les traiter

Kirill Potekhin

Updated: mars 20, 2023

Content

62fdf1ee3ac056e02f757705 jp android tutorial 1 configuration 9

Dans ce billet, j’aborderai les SKErrors : quels problèmes ils impliquent et comment faire pour y remédier. Pour chaque erreur, nous examinerons trois aspects : pourquoi elle se produit, comment la traiter et quel message afficher dans la notification d’erreur.

SKError.Code.unknown, code 0

Ce que cela signifie. Une erreur s’est produite pour une raison inconnue.

Comment la traiter ? Aucune action n’est nécessaire du côté des développeurs. Cette erreur survient également lors d’une demande d’obtention de produits lors de l’utilisation de l’iOS 14 et au-dessus du simulateur. Dans ce cas, pour obtenir un produit, utilisez le test local StoreKit ou un appareil/émulateur réel avec la version d’iOS inférieure à celle d’iOS 14.

Quel message afficher ? Désolé, cet achat est indisponible pour une raison inconnue. Veuillez réessayer plus tard.

6129480992e3bf3eee2b6498 6zrtcxb0l aojbaykonkyks ytivmmkytagofibbph6zuprqv 4p1h8bjunif2yqzsush8mv26sehrxknqi ajrtygdos2nrly shjoisglkplfpgmxsnc

SKError.Code.clientInvalid, code 1

Ce que cela signifie. L’utilisateur ne peut pas effectuer d’achat. Par exemple, un enfant essaie d’acheter quelque chose alors que la fonction de contrôle parental de l’appareil est activée.

Comment la traiter ? Aucune action n’est nécessaire du côté des développeurs.

Quel message afficher. L’achat ne peut être réalisé. S’il vous plaît, changez votre compte ou votre appareil.

SKError.Code.paymentCancelled, code 2

Ce que cela signifie. L’utilisateur est arrivé à l’écran de paiement, mais a changé d’avis et a cliqué sur « annuler ».

Comment la traiter ? D’un point de vue technique, aucune erreur ne s’est produite et, dans ce cas, il n’y a rien à faire. D’un point de vue marketing, vous pouvez continuer à travailler avec un tel utilisateur, par exemple en lui offrant une réduction.

Quel message afficher ? Vous avez deux options ici. Le plus simple est de ne rien montrer. Cependant, vous pouvez aussi essayer de reconquérir un utilisateur avec un message comme celui-ci : « Vous avez annulé votre achat. Êtes-vous intéressé par l’essai d’un abonnement à prix réduit ? »

SKError.Code.paymentInvalid, code 3

Ce que cela signifie. Pour une raison quelconque, le paiement a échoué : la carte avait expiré ou il n’y avait pas assez de fonds pour cet achat.

Comment la traiter ? Aucune action n’est nécessaire du côté des développeurs.

Quel message afficher ? Votre achat a été refusé. Veuillez vérifier les détails du paiement et vous assurer qu’il y a suffisamment de fonds sur votre compte.

SKError.Code.paymentNotAllowed, code 4

Ce que cela signifie. Il est probable que cette carte comporte certaines restrictions d’achat : des limites sont fixées ou la fonction d’achat en ligne n’est pas disponible.

Comment la traiter ? Aucune action n’est nécessaire du côté des développeurs.

Quel message afficher ? L’achat n’est pas disponible pour le mode de paiement sélectionné. Veuillez vous assurer que votre mode de paiement vous permet d’effectuer des achats en ligne.

SKError.Code.storeProductNotAvailable, code 5

Ce que cela signifie. L’utilisateur essaie d’acheter un produit qui n’est pas disponible pour la région dans laquelle ce magasin est utilisé.

Comment la traiter ? Le développeur doit vérifier la disponibilité des produits dans le magasin et la région de l’utilisateur. Pour cela, vous pouvez utiliser SKStorefront.

Quel message afficher. Ce produit n’est pas disponible dans votre région. S’il vous plaît, changez de magasin et réessayez.

Subscribe to Adapty newsletter

Get fresh paywall ideas, subscription insights, and mobile app news every month!

SKError.Code.cloudServicePermissionDenied, code 6

Ce que cela signifie. L’utilisateur n’a pas donné accès aux informations de son service Cloud.

Comment la traiter ? Aucune action n’est nécessaire du côté des développeurs.

Quel message afficher ? Pour être honnête, je n’ai jamais rencontré une telle erreur. En fait, vous pouvez simplement écrire que l’achat a été refusé.

SKError.Code.cloudServiceNetworkConnectionFailed, code 7

Ce que cela signifie. L’appareil n’était pas connecté à Internet lors de l’achat.

Comment la traiter ? Aucune action n’est nécessaire du côté des développeurs.

Quel message afficher ? L’achat ne peut être effectué car votre appareil n’est pas connecté à Internet. Veuillez réessayer plus tard avec une connexion internet stable.

SKError.Code.cloudServiceRevoked, code 8

Ce que cela signifie. Cet appareil n’a pas accès au service de paiement StoreKit. Cette erreur se produit généralement dans Sandbox.

Comment la traiter ? Créez un nouvel utilisateur Sandbox ou essayez simplement de répéter l’opération.

Quel message afficher ? Désolé, une erreur s’est produite.

SKError.Code.privacyAcknowledgementRequired, code 9

Ce que cela signifie. L’utilisateur n’a pas accepté les conditions d’utilisation de l’AppStore. Comme il est indiqué dans la documentation, « l’utilisateur n’a pas encore pris connaissance de la politique de confidentialité d’Apple pour Apple Music ». Mais cela ressemble à une erreur, car il n’y a aucune raison de mentionner Apple Music ici.

Comment la traiter ? Aucune action n’est nécessaire du côté des développeurs.

Quel message afficher ? L’achat ne peut être réalisé car vous n’avez pas accepté les conditions d’utilisation de l’AppStore. Veuillez confirmer votre consentement dans les paramètres et revenir ensuite à l’achat.

SKError.Code.unauthorizedRequestData, code 10

Ce que cela signifie. L’ID de votre application ne contient pas le droit requis pour utiliser StoreKit.

Comment la traiter ? Vous devez terminer le processus de configuration des achats intégrés pour votre application.

Quel message afficher ? Une erreur s’est produite. S’il vous plaît, réessayez plus tard.

SKError.Code.invalidOfferIdentifier, code 11

Ce que cela signifie. L’utilisateur essaie d’acheter un produit avec une offre promotionnelle (promo offer)  incorrecte.

Comment la traiter ? Aucune action n’est nécessaire du côté des développeurs.

Quel message afficher ? L’offre promotionnelle n’est pas valable ou a expiré.

SKError.Code.invalidSignature, code 12

Ce que cela signifie. La signature de l’offre promotionnelle pour la requête StoreKit a été générée de manière incorrecte.

Comment la traiter ? Vérifiez comment la signature est générée et corrigez les erreurs. Si vous utilisez Adapty, téléchargez la clé d’abonnement.

Quel message afficher ? Désolé, une erreur s’est produite lors de l’application du code promo. S’il vous plaît, réessayez plus tard.

SKError.Code.missingOfferParams, code 13

Ce que cela signifie. Les paramètres de l’offre promotionnelle sont formés de manière incorrecte.

Comment la traiter ? Vérifiez et corrigez les paramètres de votre offre promotionnelle.

Quel message afficher ? Désolé, une erreur s’est produite lors de l’application du offre promotionnelle. S’il vous plaît, réessayez plus tard.

SKError.Code.invalidOfferPrice, code 14

Ce que cela signifie. L’utilisateur essaie d’acheter un produit dont le prix n’est pas pertinent. Il est probable que le prix affiché dans l’AppStore ne soit plus valide.

Comment la traiter ? Définissez le prix actualisé de cette offre dans l’AppStore.

Quel message afficher ? Désolé, votre achat ne peut pas être effectué. S’il vous plaît, réessayez plus tard.

Conclusion

Un traitement correct des erreurs améliore l’expérience des utilisateurs et permet de renvoyer au moins une partie des utilisateurs qui n’ont pas pu payer l’abonnement immédiatement pour une raison quelconque. Voici les erreurs les plus courantes lors de la mise en place des achats dans une application iOS :

  • SKError.Code.unknown, une erreur inconnue ; 
  • SKError.Code.paymentCancelled, lorsque l’utilisateur annule l’achat ; 
  • SKError.Code.paymentInvalid, lorsque le paiement ne peut être traité.

En fait, la gestion des erreurs et la mise en œuvre des achats sont des processus fastidieux. Je vous recommande donc d’essayer Adapty SDK for iOS, pour iOS, qui facilite la mise en œuvre des achats intégrés et offre d’autres avantages, tels que l’analyse des abonnements, l’analyse des cohortes (cohort analysis), les tests a/b pour les murs payants et la validation des reçus côté serveur (server side).