Passer au contenu principal
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.
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.

Badges Android

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

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

Exemple de info.plist avec `OneSignal_disable_badge_clearing` désactivé (défini sur `YES`).

<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.
Apple a déprécié UIApplication.shared.applicationIconBadgeNumber dans iOS 17. Vous devez maintenant utiliser les méthodes suivantes du framework UserNotifications :
Définir le compteur de badge Pour définir le badge sur l’icône de l’application à une valeur spécifique :
Swift
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
// 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
// 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

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.
  • Tableau de bord
  • API
  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

Définir les badges dans le formulaire de message du tableau de bord OneSignal.

Lors de l’envoi de notifications push iOS, le compteur de badge changera en fonction de ces options. Si l’application est ouverte, le compteur de badge se réinitialisera sauf si vous avez suivi les instructions ci-dessus pour désactiver le nettoyage automatique des badges.
Tutoriel sur les badges terminé ! Prochaines étapes :