> ## Documentation Index
> Fetch the complete documentation index at: https://documentation.onesignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Dépannage du SDK mobile

> Résolvez les problèmes courants du SDK mobile OneSignal, notamment les échecs de livraison push, les erreurs APNS et les problèmes de messagerie in-app sur iOS, Android et les frameworks cross-platform.

<Note>
  Si vous rencontrez des problèmes avec votre site web, consultez le [guide de dépannage du push web](./troubleshooting-web-push).
</Note>

## Étapes de dépannage

### Consultez les instructions de configuration et mettez à jour le SDK

Nous publions fréquemment des [mises à jour](https://github.com/OneSignal/sdks) avec des corrections de bugs, des améliorations et la prise en charge des derniers changements du système d'exploitation. Assurez-vous d'utiliser la dernière version du SDK et d'avoir suivi les instructions de configuration.

<Card title="Configuration du SDK mobile" icon="wrench" href="./mobile-sdk-setup">
  Instructions de configuration conçues pour aider à prévenir les problèmes courants et tester l'intégration.
</Card>

### Consultez les guides de dépannage courants

<Columns cols={2}>
  <Card title="Notifications non affichées ou retardées" icon="bell-slash" href="./notifications-show-successful-but-are-not-being-shown">
    Les notifications push n'apparaissent pas sur l'appareil ou sont retardées.
  </Card>

  <Card title="Images de notification non affichées" icon="image" href="./notification-images-not-showing">
    Les images n'apparaissent pas dans la vue développée de la notification.
  </Card>

  <Card title="CTR des notifications" icon="arrow-pointer" href="./notification-ctr">
    Faible taux de clics ou absence de clics sur les notifications.
  </Card>

  <Card title="Notifications en double" icon="copy" href="./duplicated-notifications">
    Les notifications apparaissent plusieurs fois sur l'appareil.
  </Card>

  <Card title="Dépannage des messages in-app" icon="message" href="./in-app-message-troubleshooting">
    Les messages in-app ne s'affichent pas ou ne se comportent pas comme prévu.
  </Card>
</Columns>

### Vérifiez les problèmes courants dans votre app

#### Méthodes OneSignal qui bloquent l'affichage des push

Vérifiez si votre app contient des méthodes comme `optOut()`, par exemple `OneSignal.User.pushSubscription.optOut()`, ou si vous avez défini `enabled: false` via nos REST APIs. Cela définit le statut de l'abonnement push sur `unsubscribed`. Consultez la [référence du SDK mobile](./mobile-sdk-reference#optout-%2C-optin-%2C-optedin) pour plus de détails.

Si l'app est ouverte pendant l'envoi du push, vous pouvez empêcher l'affichage du push via la méthode `preventDefault()`. Cela est généralement défini dans le [Listener d'Événements en Avant-Plan](./mobile-sdk-reference#addforegroundlifecyclelistener-push) ou l'[Extension de Service de Notification Android](./service-extensions).

#### Conflits avec Firebase Messaging ou d'autres SDKs

Si votre app inclut également le Firebase Messaging SDK ou d'autres SDKs de notifications push, vérifiez qu'ils n'interceptent pas les messages avant que OneSignal puisse les traiter.

Ce problème se produit souvent quand :

* Les notifications apparaissent comme **Livrées** dans OneSignal mais n'apparaissent jamais sur l'appareil.
* L'app inclut à la fois OneSignal et `firebase_messaging` (ou un `FirebaseMessagingService` personnalisé).
* Le push fonctionne quand Firebase Messaging est supprimé, mais échoue quand les deux SDKs sont présents.

1. Vérifiez votre `AndroidManifest.xml` pour les récepteurs Firebase legacy comme `com.google.firebase.iid.FirebaseInstanceIdReceiver` et supprimez-les/excluez-les conditionnellement si OneSignal est responsable de la livraison push.

2. Vérifiez les implémentations personnalisées de `FirebaseMessagingService` (ou les bibliothèques comme `firebase_messaging` dans Flutter) qui remplacent `onMessageReceived`. Si un autre service traite ou supprime complètement les messages, il peut consommer le payload FCM avant que OneSignal puisse afficher la notification.

3. Évitez d'appeler les APIs de gestion des tokens Firebase comme : `FirebaseMessaging.getToken()` ou `FirebaseMessaging.deleteToken()`.

Si OneSignal est responsable de la livraison push, il doit être le seul SDK gérant le cycle de vie du token push. Récupérer ou gérer le token FCM directement peut entraîner des conflits de propriété du token et un comportement de livraison incohérent.

Si vous avez besoin du token push de l'appareil pour d'autres systèmes, lisez-le depuis OneSignal (par exemple, `User.pushSubscription.token`) et écoutez les changements d'abonnement/token en utilisant les [APIs d'observateur du SDK](./mobile-sdk-reference#addobserver-push-subscription-changes).

### Testez le projet d'exemple pour votre SDK

Vérifiez si votre problème est reproductible en utilisant le projet d'exemple maintenu par notre équipe d'ingénierie pour chaque SDK.

* [Projet d'exemple iOS](https://github.com/OneSignal/OneSignal-iOS-SDK/tree/main/OneSignalSwiftUIExample)
* [Projet d'exemple Android](https://github.com/OneSignal/OneSignal-Android-SDK/tree/main/examples)
* [Projet d'exemple variantes Cordova](https://github.com/OneSignal/OneSignal-Cordova-SDK/tree/main/examples)
* [Projet d'exemple React Native](https://github.com/OneSignal/react-native-onesignal/tree/main/examples)
* [Projet d'exemple Flutter](https://github.com/OneSignal/OneSignal-Flutter-SDK/tree/main/examples)
* [Projet d'exemple Unity](https://github.com/OneSignal/OneSignal-Unity-SDK/tree/main/examples)
* [Projet d'exemple .NET MAUI](https://github.com/OneSignal/OneSignal-DotNet-SDK/tree/main/examples)

### Vérifiez les journaux d'erreurs

Collectez les données de journalisation avant de diagnostiquer davantage :

* Suivez le guide sur la [capture d'un journal de débogage](./capturing-a-debug-log).
* Recherchez les erreurs, les avertissements ou les avis de dépréciation qui pourraient expliquer le comportement.

<Card title="Capture d'un journal de débogage" icon="bug" href="./capturing-a-debug-log">
  Comment activer la journalisation détaillée et capturer la sortie du SDK pour le dépannage.
</Card>

### Contactez le support

Si vous rencontrez toujours des problèmes, contactez `support@onesignal.com` avec :

* Votre ID d'application OneSignal
* L'ID externe et/ou l'ID d'abonnement de l'appareil affecté
* L'ID de notification ou un lien vers la notification dans le tableau de bord (le cas échéant)
* Un [journal de débogage de l'appareil](./capturing-a-debug-log) reproduisant le problème

***

## Erreurs courantes

### APNS Delegate never fired

Les erreurs comme « APNS Delegate Never Fired » et « APNS 3000 » sont des messages de timeout d'Apple indiquant que l'appareil n'a pas pu se connecter aux serveurs APNS d'Apple. Cela est plus courant lorsque :

* Test sur des environnements de développement APNS
* Utilisation de plusieurs dépendances de notification push ou d'APIs push iOS natives avec OneSignal
* Un problème de connectivité temporaire — cela se résout souvent lors de la prochaine fois que l'utilisateur démarre une nouvelle session (application en arrière-plan pendant 30+ secondes, puis rouverte)

**Étapes pour résoudre :**

1. Supprimez toutes les autres dépendances de notification push ou APIs push iOS natives et utilisez uniquement OneSignal. Une fois l'erreur résolue, vous pouvez rajouter l'autre code. Contactez `support@onesignal.com` pour les meilleures pratiques de coexistence.
2. Vérifiez le [journal de débogage de l'appareil](./capturing-a-debug-log) pour plus de détails.
3. Si l'erreur persiste, [contactez le support](#étapes-de-dépannage).

Si vous utilisez Capacitor, ajoutez cette configuration pour permettre à OneSignal de gérer les notifications push.

<CodeGroup>
  ```json json theme={null}
  {
    "ios": {
      "handleApplicationNotifications": false
    }
  }
  ```

  ```typescript capacitor.config.ts theme={null}
  const config: CapacitorConfig = {
    // ... additional configuration

    ios: {
      // ... additional configuration
      handleApplicationNotifications: false
    }
  };
  ```
</CodeGroup>

### L'application ne s'ouvre pas lorsqu'elle est fermée de force et qu'on clique sur une notification

Assurez-vous de ne pas tester sur une version `Debug`. Par exemple, pour les applications Flutter, vous pouvez :

* Utiliser une version release via Flutter, par exemple `flutter run --release` (nécessite un appareil physique)
* Mettre à jour le schéma Xcode en `Release` au lieu de `Debug`

***

## Pages connexes

<Columns cols={2}>
  <Card title="Configuration du SDK mobile" icon="wrench" href="./mobile-sdk-setup">
    Instructions de configuration pour tous les SDKs mobiles et cross-platform pris en charge.
  </Card>

  <Card title="Capture d'un journal de débogage" icon="bug" href="./capturing-a-debug-log">
    Comment capturer les journaux du SDK pour le dépannage.
  </Card>

  <Card title="Dépannage du push web" icon="globe" href="./troubleshooting-web-push">
    Dépannez les problèmes de notifications push web.
  </Card>

  <Card title="Référence du SDK mobile" icon="book" href="./mobile-sdk-reference">
    Référence complète de l'API pour les SDKs mobiles OneSignal.
  </Card>
</Columns>

***

## FAQ

### Que se passe-t-il si je change mon ID d'application OneSignal dans mon application ?

Changer l'ID d'application OneSignal dans le code d'initialisation de votre application créera un tout nouvel utilisateur et un abonnement push sous le nouvel ID d'application lorsque l'utilisateur met à jour et ouvre l'application vers la dernière version.

Si votre ID de bundle iOS et/ou ID de package Android sont les mêmes, alors l'appareil continuera avec le même statut d'abonnement push. Les données utilisateur seront toutes neuves, c'est-à-dire que vous devrez ajouter à nouveau vos alias, tags, adresse email, numéro de téléphone sur le nouvel enregistrement.

Si l'ID de bundle iOS ou l'ID de package Android sont différents, alors c'est une toute nouvelle application et devrait avoir des certificats/clés push différents.

### OneSignal peut-il envoyer des notifications push dans un réseau fermé sur site ?

Cela peut fonctionner tant que les ordinateurs de votre réseau fermé ont accès aux serveurs de passerelle push que vous souhaitez prendre en charge :

* [https://support.apple.com/en-us/HT203609](https://support.apple.com/en-us/HT203609)
* [https://firebase.google.com/docs/cloud-messaging/concept-options#messaging-ports-and-your-firewall](https://firebase.google.com/docs/cloud-messaging/concept-options#messaging-ports-and-your-firewall)

Si le réseau est complètement déconnecté d'Internet, les notifications push ne peuvent pas être livrées via les services standard du système d'exploitation/navigateur, ce qui est ce que nous prenons en charge.

***
