> For the complete documentation index, see [llms.txt](https://cmp.docs.sirdata.net/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://cmp.docs.sirdata.net/applications-mobiles-sdk-natif/mobile-sdk/troubleshooting.md).

# Dépannage

| Symptôme                                                                                                                                                                                      | Cause et correction                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Android : `Could not find com.sirdata.cmp:android-sdk`                                                                                                                                        | `mavenCentral()` manque dans vos repositories, ou la version n'existe pas encore — vérifiez la page [Versions](/applications-mobiles-sdk-natif/mobile-sdk/versions.md).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| Android : `Could not find androidx.compose:compose-bom:2024.02.00`, ou un autre artefact `androidx`                                                                                           | `google()` manque dans vos repositories : les dépendances AndroidX et Compose du SDK ne sont publiées que sur le dépôt Maven de Google. Déclarez `google()` et `mavenCentral()` — voir [Installation — Android](/applications-mobiles-sdk-natif/mobile-sdk/setup.md).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| Build iOS : `value of type 'X' has no member '<api>'`                                                                                                                                         | La couche Swift UI et le framework binaire sont à des versions différentes. Résolvez à nouveau le package, et vérifiez que vous ne mélangez pas un checkout local avec une version publiée.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| La bannière réapparaît à chaque lancement                                                                                                                                                     | Votre application prend la décision à la place du SDK. Utilisez `awaitConsentDisplayDecision()` — un consentement partiel doit rouvrir la bannière et une fenêtre de capping doit l'empêcher, et ni l'un ni l'autre ne se lit dans la chaîne TC. Si le workflow de la décision est `COOKIEWALL`, c'est normal : avec le cookie wall activé, l'interface de consentement revient à chaque lancement tant que l'utilisateur n'a pas accordé la finalité 1.                                                                                                                                                                                                                                                                                                                                                 |
| La bannière n'apparaît jamais                                                                                                                                                                 | Lisez `decision.reason` (voir [Logs](/applications-mobiles-sdk-natif/mobile-sdk/logging.md)). Une fenêtre de capping active, un consentement stocké complet, ou un RGPD non applicable sont des situations normales.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| Un SDK partenaire ne voit pas de consentement                                                                                                                                                 | Ordre d'initialisation. La CMP doit être initialisée — et le consentement collecté — avant que le SDK partenaire ne lise le stockage.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| Le stockage contient `IABTCF_PublisherConsent`, ou les clés GPP, avant que l'utilisateur ait fait le moindre choix                                                                            | C'est normal. Dès que la configuration est chargée, le SDK écrit les clés qui n'attendent pas de choix : `IABTCF_gdprApplies`, `IABTCF_PolicyVersion`, `IABTCF_PublisherCC`, `IABTCF_PurposeOneTreatment`, `IABTCF_UseNonStandardTexts`, les chaînes de bits éditeur, qui portent les valeurs par défaut du SDK, et, pour un utilisateur américain, les clés GPP avec la section US National. C'est un choix enregistré qui écrit `IABTCF_TCString` : c'est cette clé qu'il faut tester. Voir la liste des clés dans [Transmission du consentement aux SDK partenaires](/applications-mobiles-sdk-natif/mobile-sdk/sharing-consent.md#les-cles-maintenues-par-le-sdk).                                                                                                                                   |
| Le code que vous relancez sur `getConsentUpdates()` ne voit pas une opposition US                                                                                                             | Un choix US — enregistré sur l'écran US, ou avec `setCcpaOptOut` — ne fait pas avancer le compteur en 2.0.0. Relisez `getUspString()` et `getGppString()` à la fermeture de l'interface de consentement.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| `isGdprApplies()` renvoie la mauvaise valeur au démarrage                                                                                                                                     | Avant l'arrivée de la configuration éditeur, l'applicabilité est déduite de la géolocalisation de l'appareil. Attendez la configuration. `gdprDefaultApplies` ne sert que si l'appareil ne déclare aucun pays : fixez-le sur l'hypothèse sûre pour vous.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| Le consentement d'un autre éditeur apparaît dans l'app                                                                                                                                        | Le couple partner / config a changé sans effacement du consentement. Une chaîne TC appartient à l'éditeur qui l'a collectée ; effacez le consentement stocké quand vous changez de couple.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| Erreur de disponibilité SwiftUI (`only available in iOS 16.0 or newer`)                                                                                                                       | Les sources du SDK n'utilisent jamais une API plus récente que leur version minimale : une erreur qui pointe un fichier du SDK signale donc une version du SDK dépassée. Mettez à jour vers la dernière version plutôt que de relever votre deployment target à 16. Votre deployment target doit être **au moins iOS 15.0**, quel que soit le canal (seul le paquet SPM 1.2.0 déclarait iOS 14.0).                                                                                                                                                                                                                                                                                                                                                                                                       |
| iOS : l'interface de consentement n'affiche qu'un indicateur de chargement, et l'utilisateur ne peut pas la fermer                                                                            | Problème connu de 2.0.0. Quand la configuration n'a pas pu être chargée à ce lancement — pas de réseau, ou identifiants erronés —, l'interface de consentement n'affiche qu'un indicateur de chargement, sans bouton de fermeture. Une `.sheet` se ferme encore d'un glissement vers le bas, mais pas avec `.interactiveDismissDisabled()`, ni en présentation plein écran (UIKit `.overFullScreen`, `showConsentUI()` de React Native). Présentez l'interface dans une `.sheet` que l'utilisateur peut faire glisser. `IosCMPApi.shared.getInitError()` indique si la configuration n'a pas pu être chargée — voir [Logs](/applications-mobiles-sdk-natif/mobile-sdk/logging.md). Corrigé dans la prochaine version (non publiée) : l'interface de consentement affiche un message et un bouton Fermer. |
| iOS : l'app se termine au lancement ou à son premier appel au SDK, avec `SirDataCMP is already initialized. Call shutdown() first.` ou `SirDataCMP not initialized. Call initialize() first.` | Les exceptions Kotlin ne sont pas converties en erreurs Swift : ces mauvais usages terminent l'application. Appelez `IosCMPApi.shared.initialize` une seule fois, sur le fil principal — dans `App.init()` ou `application(_:didFinishLaunchingWithOptions:)` —, avant tout autre appel au SDK et avant de créer une `ConsentView`. Les appels concernés sont listés dans [Référence — iOS](/applications-mobiles-sdk-natif/mobile-sdk/reference-1.md). Corrigé dans la prochaine version (non publiée) : ces appels ne terminent plus l'application.                                                                                                                                                                                                                                                    |
| CocoaPods : `pod install` échoue sur « required a higher minimum deployment target »                                                                                                          | Le pod `SirdataCMP`, et le pod du module React Native qui en dépend, exigent iOS 15.0. Indiquez `platform :ios, '15.0'` (ou plus) dans votre `Podfile`, puis relancez `pod install`.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| Swift Package Manager reste en 1.2.0 après la mise à jour des packages                                                                                                                        | Une règle « Up to Next Major Version » à partir de 1.2.0 ne résout jamais 2.0.0 : une nouvelle version majeure en sort. Faites partir la règle de 2.0.0 — dans Xcode, dans les Package Dependencies du projet ; dans `Package.swift`, `from: "2.0.0"` — et passez votre deployment target à iOS 15.0 au moins.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| Build release Android (R8) : `Missing class org.slf4j.impl.StaticLoggerBinder`                                                                                                                | La version 1.2.0 ne livrait pas de règles R8. Passez à 2.0.0, qui embarque ses propres règles, dont celle-ci et celles dont les adaptateurs de consentement ont besoin, puis retirez les règles que vous aviez ajoutées pour le SDK. Avec 1.2.0, `-dontwarn org.slf4j.impl.StaticLoggerBinder` fait passer le build, mais l'adaptateur Firebase Analytics n'envoie alors plus rien dans un build minifié.                                                                                                                                                                                                                                                                                                                                                                                                |
| React Native : `The package '@sirdata/react-native-cmp' doesn't seem to be linked`                                                                                                            | Le code natif du module n'est pas dans l'application : elle tourne dans Expo Go, qui ne charge pas de code natif personnalisé, ou elle n'a pas été reconstruite après l'installation du paquet. Utilisez un development build Expo (`npx expo run:ios`, `npx expo run:android`) ou une app React Native classique ; lancez `pod install` dans `ios/`, puis reconstruisez. Voir [Installation — React Native](/applications-mobiles-sdk-natif/mobile-sdk/react-native-setup.md).                                                                                                                                                                                                                                                                                                                          |
| React Native sur Android : `initialize` est rejeté avec `E_INIT` et `SirDataCMP.initialize() was called off the main thread`                                                                  | En 2.0.0 à 2.0.2, le pont Android appelle `initialize` hors du fil principal, et `debugMode: true` transforme cela en erreur. Ne passez pas `debugMode: true` sur Android. Sans lui, le SDK se contente d'écrire la même ligne sous le tag Logcat `SirDataCMP`. Voir [Installation — React Native](/applications-mobiles-sdk-natif/mobile-sdk/react-native-setup.md).                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| React Native sur iOS : l'application plante sur `shouldCollectConsent()`, `acceptAll()` ou `rejectAll()`, même après la résolution d'`initialize()`                                           | Un défaut de la version 2.0.0 du paquet : React Native appelle ces méthodes hors du fil principal, où le SDK natif ne peut pas les exécuter. Passez à 2.0.2, puis reconstruisez l'application. Voir [Installation — React Native](/applications-mobiles-sdk-natif/mobile-sdk/react-native-setup.md).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| React Native : depuis une entrée de réglages, « Continuer sans accepter » laisse enregistré un « Tout accepter » antérieur                                                                    | En 2.0.0 et 2.0.1, `showConsentUI()` rouvre la bannière de première visite, dont le bouton de refus ne retire un choix enregistré que si l'option de refus de la configuration est « Tout refuser et fermer ». Passez à 2.0.2 : dès qu'un choix est enregistré, `showConsentUI()` ouvre le mode de réouverture, qui affiche « Tout refuser ». Avec 2.0.0 ou 2.0.1, proposez une entrée qui appelle `rejectAll()`, ou indiquez **Paramétrer vos choix**, puis **Tout refuser**. Voir [Installation — React Native](/applications-mobiles-sdk-natif/mobile-sdk/react-native-setup.md).                                                                                                                                                                                                                     |

## Obtenir de l'aide

Indiquez, dans cet ordre : la version du SDK et la plateforme, votre partner ID et votre config ID, ce que `decision.reason` a retourné, et si `IABTCF_CmpSdkID` est présent dans le stockage. Ces quatre réponses résolvent la plupart des cas sans aller-retour.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://cmp.docs.sirdata.net/applications-mobiles-sdk-natif/mobile-sdk/troubleshooting.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
