Saltar al contenido principal
Las insignias son los pequeños puntos numerados que aparecen en el ícono de su aplicación móvil. Ayudan a captar la atención del usuario y pueden influir en el comportamiento de participación. En iOS en particular, las insignias requieren configuración adicional y ofrecen control flexible, como se describe a continuación.
Para las notificaciones de Web Push de Android, la insignia se refiere al pequeño ícono mostrado en las notificaciones, no al ícono de la aplicación, y puede personalizarse. Consulte Insignias de Web Push.

Insignias de Android

El comportamiento de las insignias del ícono de la aplicación Android puede gestionarse a través de categorías de notificación de Android. Puede controlar si una categoría (canal) muestra una insignia y establecer el comportamiento de la insignia por categoría.

Insignias de iOS

Para asegurar que los contadores de insignias se incrementen correctamente en iOS, debe configurar:
  • La OneSignalNotificationServiceExtension
  • App Groups
Consulte Configuración del SDK móvil para instrucciones completas. De forma predeterminada, el SDK de OneSignal:
  1. Borrará la insignia del ícono de la aplicación cuando se abra la aplicación.
  2. Eliminará las notificaciones del Centro de Notificaciones.
Si desea retener las notificaciones y gestionar la lógica de insignias manualmente (por ejemplo, usando su propio contador o sincronizando el estado entre dispositivos), puede deshabilitar este comportamiento automático. Casos de uso comunes para el control manual de insignias
  • Restablecer la insignia cuando la aplicación se inicia o reanuda
  • Incrementar la insignia cuando se recibe una notificación en primer plano
  • Decrementar cuando se lee o descarta un mensaje
  • Sincronizar el estado de la insignia entre dispositivos o extensiones de aplicación a través de App Groups o su backend

Deshabilitar la eliminación automática de notificaciones e insignias

En el info.plist de su aplicación, agregue la Key: OneSignal_disable_badge_clearing con tipo Boolean al Value YES

Ejemplo de info.plist con `OneSignal_disable_badge_clearing` desactivado (establecido en `YES`).

<key>OneSignal_disable_badge_clearing</key>
<true/>
Esto evita que el SDK elimine automáticamente las notificaciones o restablezca la insignia cuando se abre la aplicación.

Gestión nativa de insignias de iOS

Si deshabilita el borrado automático de insignias de OneSignal, puede usar las API nativas de Apple para controlar el comportamiento de las insignias.
Apple deprecó UIApplication.shared.applicationIconBadgeNumber en iOS 17. Ahora debe usar los siguientes métodos del framework UserNotifications:
Establecer contador de insignias Para establecer la insignia en el ícono de la aplicación a un valor específico:
Swift
import UserNotifications
import UIKit

if #available(iOS 17.0, *) {
  UNUserNotificationCenter.current().setBadgeCount(5) { error in
    if let error = error {
      print("Fallo al establecer el contador de insignias: \(error.localizedDescription)")
    } else {
      print("Contador de insignias actualizado con éxito.")
    }
  }
} else {
  UIApplication.shared.applicationIconBadgeNumber = 5
}
Obtener contador de insignias actual iOS no proporciona un método para recuperar el contador de insignias actual del sistema. Debe realizar un seguimiento del contador de insignias en el estado de su aplicación (por ejemplo, usando UserDefaults, el modelo de datos de su aplicación, o sincronizando con su backend).
Swift
// Ejemplo: Almacenar y recuperar el contador de insignias usando UserDefaults
let badgeCount = UserDefaults.standard.integer(forKey: "badgeCount")
// Actualizar el contador de insignias según sea necesario
UserDefaults.standard.set(badgeCount, forKey: "badgeCount")
Incrementar o decrementar la insignia Debe gestionar la lógica de insignias manualmente, ya que los cambios relativos (como +1 o -1) no son compatibles con los payloads. Actualice su contador de insignias almacenado y luego establézcalo:
Swift
// Ejemplo: Incrementar el contador de insignias y actualizar la insignia del sistema
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
}
Borrar insignia Para eliminar la insignia por completo:
Swift

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

Enviar push de iOS con insignias

Puede establecer el contador de insignias en el panel de OneSignal o usando la API.
  • Panel
  • API
  1. Vaya a Messages > Push o Templates
  2. Bajo Platform Settings > Send to Apple iOS > Badges
  3. Elija cualquiera de las siguientes opciones:
    • Establecer a un número específico
    • Aumentar por una cantidad relativa

Establecer insignias en el formulario de mensaje del panel de OneSignal.

Al enviar notificaciones push de iOS, el contador de insignias cambiará según estas opciones. Si la aplicación está abierta, el contador de insignias se restablecerá a menos que haya seguido las instrucciones anteriores para deshabilitar el borrado automático de insignias.
¡Tutorial de insignias completo! Próximos pasos: