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

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

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

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.

⭐️ Download our guide on in-app techniques which will make in-app purchases in your app perfect

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.

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.

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.

Start for free

Adapty handles all SKErrors automatically,

as well as provides the server-side validation and covers all side cases

Start for free

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).

Further reading

Adapty April Update: Segmentations, Offer Codes, Family Sharing
Adapty April Update: Segmentations, Offer Codes, Family Sharing
May 12, 2021
3 min read
iOS in-app purchases, part 2: Initialization and purchases processing
iOS in-app purchases, part 2: Initialization and purchases processing
October 2, 2020
10 min read
What’s new in SKAdNetwork 4.0
What’s new in SKAdNetwork 4.0
June 30, 2022
5 min read