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

# Badges

> Gérez les compteurs de badges d'icône d'application pour les notifications push sur iOS, Android et Huawei, y compris le nettoyage automatique, le contrôle API et la logique native des badges.

Les badges sont les petits points numérotés qui apparaissent sur l'icône de votre application mobile. Ils aident à capter l'attention de l'utilisateur et peuvent influencer le comportement d'engagement. Sur iOS en particulier, les badges nécessitent une configuration supplémentaire et offrent un contrôle flexible, comme décrit ci-dessous.

<Note>
  Pour les notifications push Web Android, le badge fait référence à la petite icône affichée sur les notifications, et non à l'icône de l'application, et peut être personnalisé. Voir [Badges push Web](./push#badges).
</Note>

***

## Badges Android

Le comportement des badges d'icône d'application Android peut être géré via les [catégories de notification Android](./android-notification-categories). Vous pouvez contrôler si une catégorie (canal) affiche un badge et définir le comportement du badge par catégorie.

***

## Badges Huawei

Sur les appareils Huawei, un badge peut s'afficher sous forme de nombre ou de point sur l'icône de l'application, selon les paramètres de l'appareil de l'utilisateur. Les badges aident à indiquer les messages non lus ou les actions en attente, encourageant les utilisateurs à ouvrir l'application. OneSignal vous permet de contrôler directement les compteurs de badges Huawei via le tableau de bord ou l'API.

### Comment fonctionnent les badges Huawei

Le badge s'affiche sur l'icône de l'application sous forme de **comptage numérique** ou de **point**, selon le paramètre de l'appareil de l'utilisateur (**Paramètres > Notifications > Badges d'icônes d'application**). Votre appel API contrôle le comptage sous-jacent ; l'appareil décide du style visuel.

#### Paramètres

| Paramètre              | Type    | Plage | Description                                                                                                                                                                                                           |
| ---------------------- | ------- | ----- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `huawei_badge_class`   | string  | —     | **(Requis)** Nom de classe entièrement qualifié de l'Activity de lancement de votre application (ex. : `com.example.myapp.MainActivity`). Indique au système Huawei sur quelle icône d'application afficher le badge. |
| `huawei_badge_set_num` | integer | 0–99  | Définit le badge à un nombre exact. `0` efface le badge.                                                                                                                                                              |
| `huawei_badge_add_num` | integer | 1–99  | Incrémente le compteur de badge existant de cette quantité.                                                                                                                                                           |

#### Règles de comportement

* `huawei_badge_class` est requis pour toute opération de badge.
* Si `huawei_badge_set_num` et `huawei_badge_add_num` sont tous les deux fournis, `huawei_badge_set_num` est prioritaire.
* Si aucun n'est fourni (mais que `huawei_badge_class` est défini), le compteur de badge s'incrémente de 1 par défaut.

### Envoyer un push Huawei avec des badges

<Tabs>
  <Tab title="Tableau de bord">
    1. Accédez à **Messages > Push** ou **Modèles**
    2. Sous **Paramètres de plateforme > Envoyer vers Huawei Android > Badge**
    3. Choisissez l'une des options suivantes :
       * **Ne pas définir** — le badge n'est pas affecté par cette notification
       * **Définir à** — définit le badge à un nombre spécifique (0-99)
       * **Augmenter de** — incrémente le compteur de badge existant (1-99)
  </Tab>

  <Tab title="API">
    Utilisez les paramètres suivants dans l'API [Create message](/reference/create-message) :

    * `huawei_badge_class` — *(chaîne, requis pour le badge)* Le nom de classe entièrement qualifié de l'activity de lancement de l'application (par exemple, `"com.example.myapp.MainActivity"`)
    * `huawei_badge_set_num` — *(entier, 0-99)* Définit le compteur de badge à ce nombre exact. Définir à `0` pour effacer le badge.
    * `huawei_badge_add_num` — *(entier, 1-99)* Incrémente le compteur de badge existant de ce nombre. S'il est omis avec `huawei_badge_set_num`, incrémente par défaut de 1.

    **Définir le badge à un nombre spécifique :**

    ```json theme={null}
    {
      "huawei_badge_class": "com.example.myapp.MainActivity",
      "huawei_badge_set_num": 5
    }
    ```

    **Incrémenter le badge d'un montant spécifique :**

    ```json theme={null}
    {
      "huawei_badge_class": "com.example.myapp.MainActivity",
      "huawei_badge_add_num": 1
    }
    ```

    **Effacer le badge :**

    ```json theme={null}
    {
      "huawei_badge_class": "com.example.myapp.MainActivity",
      "huawei_badge_set_num": 0
    }
    ```
  </Tab>
</Tabs>

### Effacer les badges

Huawei **n'efface pas** automatiquement le badge lorsqu'un utilisateur ouvre l'application ou appuie sur une notification. Pour effacer le badge, vous avez deux options :

* **Via l'API ou le tableau de bord** : Envoyez une notification avec `huawei_badge_set_num` défini à `0` (ou utilisez **Définir à > 0** dans le tableau de bord). Cela peut être une [notification de données/en arrière-plan](./data-notifications) si vous ne voulez pas qu'une notification visible apparaisse.
* **Via le code côté client** : Votre application peut effacer le badge localement en utilisant l'API de badge Huawei. Cela nécessite la permission `com.huawei.android.launcher.permission.CHANGE_BADGE` dans votre `AndroidManifest.xml`. Consultez [le guide de développement des badges Huawei](https://developer.huawei.com/consumer/en/doc/hmscore-guides/android-badging-0000001050042083) pour les détails d'implémentation.

<Note>
  Le paramètre `huawei_badge_set_num` nécessite EMUI 10.0.0 ou ultérieur et Push SDK 10.1.0 ou ultérieur. Sur les appareils plus anciens, seul `huawei_badge_add_num` est pris en charge.
</Note>

***

## Badges iOS

Pour garantir que les compteurs de badges s'incrémentent correctement sur iOS, vous devez configurer :

* Le `OneSignalNotificationServiceExtension`
* App Groups

Consultez [Configuration du SDK mobile](./mobile-sdk-setup) pour les instructions complètes.

Par défaut, le SDK OneSignal va :

1. Effacer le badge de l'icône de l'application lorsque l'application est ouverte.
2. Supprimer les notifications du Centre de notifications.

Si vous souhaitez conserver les notifications et gérer la logique des badges manuellement (par exemple, en utilisant votre propre compteur ou en synchronisant l'état entre les appareils), vous pouvez désactiver ce comportement automatique.

**Cas d'utilisation courants pour le contrôle manuel des badges**

* Réinitialiser le badge au lancement ou à la reprise de l'application
* Incrémenter le badge lorsqu'une notification est reçue au premier plan
* Décrémenter lorsqu'un message est lu ou ignoré
* Synchroniser l'état du badge entre les appareils ou les extensions d'application via App Groups ou votre backend

### Désactiver le nettoyage automatique des notifications et des badges

Dans le `info.plist` de votre application, ajoutez la clé : `OneSignal_disable_badge_clearing` de type Boolean avec la valeur `YES`

<Frame caption="Info.plist avec OneSignal_disable_badge_clearing défini sur YES.">
  <img src="https://mintcdn.com/onesignal/Xl2NHJvxakrK4JbL/images/docs/ea4fbad85bfcb4909ce88668e3882fc8749624c781a66d7c78c440b7e267999c-Screenshot_2025-04-01_at_4.37.05_PM.png?fit=max&auto=format&n=Xl2NHJvxakrK4JbL&q=85&s=e2aafae9e93e16b63e263f34770f262a" alt="Xcode Info.plist editor showing OneSignal_disable_badge_clearing set to YES" width="2284" height="1484" data-path="images/docs/ea4fbad85bfcb4909ce88668e3882fc8749624c781a66d7c78c440b7e267999c-Screenshot_2025-04-01_at_4.37.05_PM.png" />
</Frame>

```xml theme={null}
<key>OneSignal_disable_badge_clearing</key>
<true/>
```

Cela empêche le SDK de supprimer automatiquement les notifications ou de réinitialiser le badge lorsque l'application s'ouvre.

#### Gestion native des badges iOS

Si vous désactivez le nettoyage automatique des badges de OneSignal, vous pouvez utiliser les API natives d'Apple pour contrôler le comportement des badges.

<Warning>
  Apple a déprécié `UIApplication.shared.applicationIconBadgeNumber` dans iOS 17. Vous devez maintenant utiliser les méthodes suivantes du [framework UserNotifications](https://developer.apple.com/documentation/UserNotifications/UNUserNotificationCenter/setBadgeCount\(_:withCompletionHandler:\)) :
</Warning>

**Définir le compteur de badge**

Pour définir le badge sur l'icône de l'application à une valeur spécifique :

```swift theme={null}
import UserNotifications
import UIKit

if #available(iOS 17.0, *) {
  UNUserNotificationCenter.current().setBadgeCount(5) { error in
    if let error = error {
      print("Failed to set badge count: \(error.localizedDescription)")
    } else {
      print("Badge count updated successfully.")
    }
  }
} else {
  UIApplication.shared.applicationIconBadgeNumber = 5
}
```

**Obtenir le compteur de badge actuel**

iOS ne fournit pas de méthode pour récupérer le compteur de badge actuel du système. Vous devez suivre le compteur de badge dans l'état de votre application (par exemple, en utilisant `UserDefaults`, le modèle de données de votre application ou en synchronisant avec votre backend).

```swift theme={null}
// Exemple : Stocker et récupérer le compteur de badge en utilisant UserDefaults
let badgeCount = UserDefaults.standard.integer(forKey: "badgeCount")
// Mettre à jour le compteur de badge selon les besoins
UserDefaults.standard.set(badgeCount, forKey: "badgeCount")
```

**Incrémenter ou décrémenter le badge**

Vous devez gérer la logique des badges manuellement, car les changements relatifs (comme +1 ou -1) ne sont pas pris en charge dans les payloads. Mettez à jour votre compteur de badge stocké, puis définissez-le :

```swift theme={null}
// Exemple : Incrémenter le compteur de badge et mettre à jour le badge système
let currentCount = UserDefaults.standard.integer(forKey: "badgeCount")
let updatedCount = max(0, currentCount + 1)
UserDefaults.standard.set(updatedCount, forKey: "badgeCount")

if #available(iOS 17.0, *) {
  UNUserNotificationCenter.current().setBadgeCount(updatedCount)
} else {
  UIApplication.shared.applicationIconBadgeNumber = updatedCount
}
```

**Effacer le badge**

Pour supprimer complètement le badge :

```swift theme={null}
if #available(iOS 17.0, *) {
  UNUserNotificationCenter.current().setBadgeCount(0)
} else {
  UIApplication.shared.applicationIconBadgeNumber = 0
}
```

### Envoyer des push iOS avec badges

Vous pouvez définir le compteur de badge dans le tableau de bord OneSignal ou en utilisant l'API.

<Tabs>
  <Tab title="Tableau de bord">
    1. Accédez à **Messages > Push** ou **Modèles**.
    2. Sous **Paramètres de plateforme > Envoyer vers Apple iOS > Badges**.
    3. Choisissez soit :
       * Définir à un nombre spécifique.
       * Augmenter d'un montant relatif.

    <Frame caption="Définir les badges dans le formulaire de message du tableau de bord OneSignal.">
      <img src="https://mintcdn.com/onesignal/RWtLFPeffHrC81wI/images/docs/a6f4a4c0d5869fd9ba5c83ded26752f83c1350c4f6f5213a985cf522fa4d0387-Screenshot_2025-04-01_at_4.42.50_PM.png?fit=max&auto=format&n=RWtLFPeffHrC81wI&q=85&s=8b428dfec1995ea5ec296d717bad9524" alt="OneSignal dashboard push message form showing iOS badge count options" width="1528" height="558" data-path="images/docs/a6f4a4c0d5869fd9ba5c83ded26752f83c1350c4f6f5213a985cf522fa4d0387-Screenshot_2025-04-01_at_4.42.50_PM.png" />
    </Frame>
  </Tab>

  <Tab title="API">
    Utilisez les paramètres suivants dans l'API [Créer un message](/reference/create-message) :

    * `ios_badgeType` — Défini sur `SetTo` ou `Increase`.
    * `ios_badgeCount` — Le nombre à définir ou à augmenter.

    ```json theme={null}
    {
      "ios_badgeType": "Increase",
      "ios_badgeCount": 1
    }
    ```
  </Tab>
</Tabs>

Lors de l'envoi de notifications push iOS, le compteur de badge change en fonction de ces options.

Si l'application est ouverte, le compteur de badge se réinitialise sauf si vous [désactivez le nettoyage automatique des badges](#désactiver-le-nettoyage-automatique-des-notifications-et-des-badges).

***

## FAQ

### Pourquoi mon compteur de badge ne s'incrémente-t-il pas sur iOS ?

Assurez-vous d'avoir configuré le `OneSignalNotificationServiceExtension` et les App Groups. Sans ces éléments, les compteurs de badge ne peuvent pas s'incrémenter correctement. Consultez [Configuration du SDK mobile](./mobile-sdk-setup) pour les instructions complètes.

### Comment effacer les badges sur Huawei ?

Envoyez une notification avec `huawei_badge_set_num` défini sur `0`, ou utilisez **Définir à > 0** dans le tableau de bord. Vous pouvez également utiliser une [notification de données/en arrière-plan](./data-notifications) pour effacer les badges sans afficher de notification visible. Vous pouvez aussi effacer le badge côté client en utilisant l'API de badge Huawei.

### Puis-je définir des badges pour les push Web ?

Non. Les badges d'icône d'application ne sont pris en charge que sur iOS, Android et Huawei. Pour Android Web Push, le "badge" fait référence à la petite icône affichée sur la notification elle-même — voir [Badges push Web](./push#badges).

***

## Pages connexes

<Columns cols={2}>
  <Card title="Catégories de notification Android" icon="android" href="./android-notification-categories">
    Contrôlez l'affichage et le comportement des badges par canal de notification sur Android.
  </Card>

  <Card title="Autorisation Huawei" icon="mobile" href="./authorize-onesignal-to-send-huawei-push">
    Configurez la messagerie push Huawei avec OneSignal.
  </Card>

  <Card title="Vue d'ensemble Push" icon="bell" href="./push">
    Référence complète des fonctionnalités de notifications push, y compris les badges push Web.
  </Card>

  <Card title="Configuration du SDK mobile" icon="code" href="./mobile-sdk-setup">
    Configurez le SDK OneSignal, y compris les prérequis de badge pour iOS.
  </Card>
</Columns>
