---
title: "Gérer les erreurs dans le SDK iOS"
description: "Gérez efficacement les erreurs du SDK iOS avec le guide de dépannage d'Adapty."
---

Le SDK Adapty dispose de son propre wrapper pour tout type d'erreur, appelé `AdaptyError`. En pratique, chaque erreur renvoyée par le SDK est un `AdaptyError`. Il possède deux propriétés utiles : `originalError` et `adaptyErrorCode`, décrites ci-dessous.

**originalError** contient l'erreur d'origine si vous en avez besoin. Il peut s'agir d'une [SKError](https://developer.apple.com/documentation/storekit/skerror), d'une [NSError](https://developer.apple.com/documentation/foundation/nserror) ou d'une [Error](https://developer.apple.com/documentation/swift/error) Swift générique. Cette propriété est optionnelle, car certaines erreurs peuvent être générées directement par le SDK — par exemple, des données incohérentes ou manquantes — et ne disposent pas d'erreur d'origine autour de laquelle le wrapper a été initialement construit.

**adaptyErrorCode** peut être utilisé pour gérer les problèmes courants, comme :

- des identifiants invalides
- des erreurs réseau
- des paiements annulés
- des problèmes de facturation
- un reçu invalide
- et bien plus encore

Il est très simple de vérifier le code d'erreur et d'y réagir en conséquence.

```swift showLineNumbers title="Swift"
do {
    let info = try await Adapty.makePurchase(product: product)
} catch {
    if error.adaptyErrorCode == .paymentCancelled {
        // purchase was cancelled
        // you can offer discount to your user or remind them later
    }
}
```

:::tip
**Activez les logs détaillés avant de déboguer.** La plupart des `AdaptyError` encapsulent une erreur StoreKit, réseau ou backend sous-jacente. Avec les logs détaillés activés (`Adapty.logLevel = .verbose` — voir [Logging](sdk-installation-ios#logging)), cette erreur encapsulée est affichée dans la console, ce qui révèle généralement la cause réelle. La propriété `originalError` est renseignée quel que soit le niveau de log — les logs détaillés permettent simplement de la faire apparaître dans la console.
:::

:::important
Si ces solutions ne résolvent pas votre problème, consultez la section [Autres problèmes](#other-issues) pour connaître les étapes à suivre avant de contacter le support, afin de nous aider à vous assister plus efficacement.
:::

## Erreurs StoreKit \{#storekit-errors\}

| Erreur                                                                                                                                     | Code | Solution                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
|--------------------------------------------------------------------------------------------------------------------------------------------|------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [unknown](https://developer.apple.com/documentation/storekit/skerror/code/unknown)                                                         | 0    | Code d'erreur indiquant qu'une erreur inconnue ou inattendue s'est produite. <br/> Réessayez ou consultez la section [Autres problèmes](#other-issues).                                                                                                                                                                                                                                                                                                       |
| [clientInvalid](https://developer.apple.com/documentation/storekit/skerror/code/clientinvalid)                                             | 1    | Ce code d'erreur indique que le client n'est pas autorisé à effectuer l'action tentée.                                                                                                                                                                                                                                                                                                                                                                        |
| [paymentCancelled](https://developer.apple.com/documentation/storekit/skerror/code/paymentcancelled)                                       | 2    | <p>Ce code d'erreur indique que l'utilisateur a annulé une demande de paiement.</p><p>Aucune action n'est requise, mais d'un point de vue métier, vous pouvez proposer une réduction à votre utilisateur ou lui rappeler plus tard.</p>                                                                                                                                                                                                                        |
| [paymentInvalid](https://developer.apple.com/documentation/storekit/skerror/code/paymentinvalid)                                           | 3    | Cette erreur indique qu'un des paramètres de paiement n'a pas été reconnu par l'App Store.                                                                                                                                                                                                                                                                                                                                                                    |
| [paymentNotAllowed](https://developer.apple.com/documentation/storekit/skerror/code/paymentnotallowed)                                     | 4    | Ce code d'erreur indique que l'utilisateur n'est pas autorisé à valider des paiements.                                                                                                                                                                                                                                                                                                                                                                        |
| [storeProductNotAvailable](https://developer.apple.com/documentation/storekit/skerror/code/storeproductnotavailable)                       | 5    | Ce code d'erreur indique que le produit demandé n'est pas disponible dans le store. <br/> Essayez de réinstaller l'application.                                                                                                                                                                                                                                                                                                                               |
| [cloudServicePermissionDenied](https://developer.apple.com/documentation/storekit/skerror/code/cloudservicepermissiondenied)               | 6    | Ce code d'erreur indique que l'utilisateur n'a pas autorisé l'accès aux informations du service Cloud.                                                                                                                                                                                                                                                                                                                                                        |
| [cloudServiceNetworkConnectionFailed](https://developer.apple.com/documentation/storekit/skerror/code/cloudservicenetworkconnectionfailed) | 7    | Ce code d'erreur indique que l'appareil n'a pas pu se connecter au réseau.                                                                                                                                                                                                                                                                                                                                                                                    |
| [cloudServiceRevoked](https://developer.apple.com/documentation/storekit/skerror/code/cloudservicerevoked/)                                | 8    | Ce code d'erreur indique que l'utilisateur a révoqué l'autorisation d'utiliser ce service Cloud.                                                                                                                                                                                                                                                                                                                                                              |
| [privacyAcknowledgementRequired](https://developer.apple.com/documentation/storekit/skerror/code/privacyacknowledgementrequired)           | 9    | Ce code d'erreur indique que l'utilisateur n'a pas encore accepté la politique de confidentialité d'Apple.                                                                                                                                                                                                                                                                                                                                                    |
| [unauthorizedRequestData](https://developer.apple.com/documentation/storekit/skerror/code/unauthorizedrequestdata)                         | 10   | Ce code d'erreur indique que l'application tente d'utiliser une propriété pour laquelle elle ne dispose pas des droits requis.                                                                                                                                                                                                                                                                                                                                 |
| [invalidOfferIdentifier](https://developer.apple.com/documentation/storekit/skerror/code/invalidofferidentifier)                           | 11   | <p>L'[`identifiant`](https://developer.apple.com/documentation/storekit/skpaymentdiscount/identifier) de l'offre n'est pas valide. Par exemple, vous n'avez pas configuré d'offre avec cet identifiant dans l'App Store, ou vous avez révoqué l'offre.</p><p>Assurez-vous de configurer les offres souhaitées dans App Store Connect et de transmettre un identifiant d'offre valide.</p>                                                                     |
| [invalidSignature](https://developer.apple.com/documentation/storekit/skerror/code/invalidsignature)                                       | 12   | Ce code d'erreur indique que la signature dans une remise de paiement n'est pas valide.                                                                                                                                                                                                                                                                                                                                                                       |
| [missingOfferParams](https://developer.apple.com/documentation/storekit/skerror/code/missingofferparams)                                   | 13   | Ce code d'erreur indique que des paramètres sont manquants dans une remise de paiement.                                                                                                                                                                                                                                                                                                                                                                       |
| [invalidOfferPrice](https://developer.apple.com/documentation/storekit/skerror/code/invalidofferprice/)                                    | 14   | Ce code d'erreur indique que le prix que vous avez spécifié dans App Store Connect n'est plus valide. Les offres doivent toujours correspondre à un prix réduit.                                                                                                                                                                                                                                                                                               |
| noProductIDsFound                                                                                                                          | 1000 | <p>Cette erreur indique qu'aucun des produits que vous avez demandés sur le paywall n'est disponible à l'achat dans l'App Store, même s'ils y sont répertoriés. Cette erreur peut parfois s'accompagner d'un avertissement `InvalidProductIdentifiers`. Si l'avertissement apparaît sans erreur, ignorez-le.</p><p>Si vous rencontrez cette erreur, suivez les étapes de la section [Correction de l'erreur Code-1000 `noProductIDsFound`](InvalidProductIdentifiers).</p> |
| productRequestFailed                                                                                                                       | 1002 | Impossible de récupérer les produits disponibles pour le moment.                                                                                                                                                                                                                                                                                                                                                                                              |
| cantMakePayments                                                                                                                           | 1003 | Les achats intégrés ne sont pas autorisés sur cet appareil. Consultez le [guide](cantMakePayments) de dépannage.                                                                                                                                                                                                                                                                                                                                              |
| [cantReadReceipt](https://developer.apple.com/documentation/storekit/skerror/code/paymentcancelled)                                        | 1005 | <p>Aucun reçu valide n'est disponible sur l'appareil. Cela peut poser problème lors des tests en sandbox.</p><p>En sandbox, vous n'aurez pas de fichier de reçu valide tant que vous n'aurez pas effectué un achat, assurez-vous donc d'en faire un avant d'y accéder. Lors des tests en sandbox, vérifiez également que vous êtes connecté sur l'appareil avec un compte sandbox Apple valide.</p>                                                            |
| productPurchaseFailed                                                                                                                      | 1006 | L'achat du produit a échoué. Cette erreur encapsule une erreur StoreKit sous-jacente — lisez `originalError` (ou activez les logs détaillés pour la voir dans la console) pour connaître la raison réelle. L'erreur encapsulée correspond généralement à l'un des codes StoreKit 0–14 du tableau ci-dessus — le plus souvent `paymentCancelled`, `paymentInvalid`, `paymentNotAllowed` ou `invalidOfferPrice`. Si vous ne pouvez pas identifier une raison précise, essayez un nouveau [profil sandbox](test-purchases-in-sandbox) ; si le problème persiste, contactez le support Apple. |
| refreshReceiptFailed                                                                                                                       | 1010 | L'opération de rafraîchissement du reçu a échoué.                                                                                                                                                                                                                                                                                                                                                                                                            |
| fetchSubscriptionStatusFailed                                                                                                              | 1020 | Impossible de récupérer le statut de l'abonnement depuis l'App Store.                                                                                                                                                                                                                                                                                                                                                                                        |
| unknownTransactionId                                                                                                                       | 1030 | L'identifiant de transaction est inconnu.                                                                                                                                                                                                                                                                                                                                                                                                                     |
| paymentPendingError                                                                                                                        | 1050 | Le paiement est actuellement en attente.                                                                                                                                                                                                                                                                                                                                                                                                                      |

## Erreurs réseau \{#network-errors\}

| Erreur         | Code | Solution                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| :------------- | :--- |:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| notActivated   | 2002 | Le SDK Adapty n'est pas activé. <br/> Cela se produit généralement lorsqu'un écran de démarrage ou un hook d'interface utilisateur précoce appelle des méthodes Adapty avant que `Adapty.activate` ne retourne. Le symptôme est intermittent et peut ne pas se reproduire sur simulateur, car le timing est différent sur un vrai appareil. Attendez le handler de complétion ou le résultat async d'`activate` avant de planifier tout autre appel SDK. Voir [Ordre des appels dans le SDK iOS](ios-sdk-call-order) pour la séquence complète. |
| badRequest     | 2003 | Requête incorrecte. <br/> Vérifiez que vous avez bien effectué toutes les étapes nécessaires à l'[intégration avec l'App Store](app-store-connection-configuration).                                                                                                                                                                                                                                                                                                           |
| serverError    | 2004 | Erreur serveur. <br/> Réessayez après un moment. Si le problème persiste, contactez l'équipe support Adapty.                                                                                                                                                                                                                                                                                                                                                                   |
| networkFailed  | 2005 | Cette erreur indique des problèmes de connexion réseau sur l'appareil de l'utilisateur. <br/> Essayez de désactiver le VPN ou de basculer entre le Wi-Fi et le réseau cellulaire.                                                                                                                                                                                                                                                                                              |
| decodingFailed | 2006 | Cette erreur indique que le décodage de la réponse a échoué. <br/> Vérifiez votre code et assurez-vous que les paramètres que vous envoyez sont valides. Par exemple, cette erreur peut indiquer que vous utilisez une clé API invalide.                                                                                                                                                                                                                                        |
| encodingFailed | 2009 | Cette erreur indique que l'encodage de la requête a échoué.                                                                                                                                                                                                                                                                                                                                                                                                                    |

## Erreurs générales \{#general-errors\}

| Erreur               | Code | Solution                                                                                                                                                                                                                                                                                                                                                                                                                    |
| :------------------- | :--- |:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| analyticsDisabled    | 3000 | Impossible de traiter les événements analytics, car vous avez [désactivé cette option](analytics-integration#disabling-external-analytics-for-a-specific-customer).                                                                                                                                                                                                                                                         |
| wrongParam           | 3001 | Cette erreur indique que certains de vos paramètres sont incorrects. <br/> Si vous utilisez le Paywall Builder d'Adapty et ne pouvez pas afficher un paywall à cause de cette erreur, activez l'option **Show on device** dans le Paywall Builder.<br/> Une autre cause possible est que la version du fichier [fallback](fallback-paywalls) local ne correspond pas à la version du SDK. Téléchargez un nouveau fichier depuis le tableau de bord. |
| activateOnceError    | 3005 | Il n'est pas possible d'appeler la méthode `.activate` plus d'une fois.                                                                                                                                                                                                                                                                                                                                                     |
| profileWasChanged    | 3006 | Le profil utilisateur a été modifié pendant l'opération. <br/> Cela se produit lorsqu'une méthode est appelée alors qu'`Adapty.identify` est encore en cours d'exécution — l'appel en vol atterrit sur un profil sur le point d'être remplacé, et le SDK le rejette. Utilisez toujours `await` sur `identify` (ou son handler de complétion) avant tout appel déclenché par une action utilisateur. Voir [Ordre des appels dans le SDK iOS](ios-sdk-call-order). |
| unsupportedData      | 3007 | Cette erreur indique que le format de données n'est pas pris en charge par le SDK.                                                                                                                                                                                                                                                                                                                                          |
| unidentifiedUserLogout | 3020 | Il n'est pas possible d'appeler la méthode `logout` pour un utilisateur non identifié.                                                                                                                                                                                                                                                                                                                                      |
| fetchTimeoutError    | 3101 | Cette erreur indique que l'opération de récupération a expiré.                                                                                                                                                                                                                                                                                                                                                              |
| operationInterrupted | 9000 | Cette opération a été interrompue par le système.                                                                                                                                                                                                                                                                                                                                                                           |

## Autres problèmes \{#other-issues\}

Si vous n'avez pas encore trouvé de solution, voici les prochaines étapes possibles :

- **Mettre à jour le SDK vers la dernière version** : nous recommandons toujours de passer à la dernière version du SDK, car elles sont plus stables et incluent des correctifs pour les problèmes connus.
- **Contacter l'équipe support ou obtenir de l'aide auprès d'autres développeurs** sur le [forum de support](https://adapty.featurebase.app/).
- **Contacter l'équipe support via [support@adapty.io](mailto:support@adapty.io) ou via le chat** : si vous n'êtes pas prêt à mettre à jour le SDK ou si cela n'a pas résolu le problème, contactez notre équipe support. Notez que votre problème sera résolu plus rapidement si vous [activez les logs détaillés](sdk-installation-ios#logging) et les partagez avec l'équipe. Vous pouvez également joindre des extraits de code pertinents.