Saltar al contenido principal
La clase OSNotification representa el payload de notificación push en los SDKs de OneSignal. Úsala para acceder al título de la notificación, cuerpo, datos personalizados y propiedades específicas de la plataforma al manejar notificaciones en tu app.
Los payloads de notificaciones push están limitados a 4096 bytes. Para evitar truncamiento, mantén los payloads por debajo de 3500 bytes. El campo additionalData está limitado a 2048 bytes.

Acceder a OSNotification en tu app

Todos los SDKs de OneSignal proporcionan un listener de eventos de notificación que devuelve un objeto OSNotification:

Campos de Android

PropertyTypeDescripción
getBody()StringTexto del cuerpo de la notificación.
getTitle()StringTítulo de la notificación.
getLaunchURL()StringURL abierta cuando se hace clic en la notificación.
getNotificationId()StringUUID de notificación de OneSignal.
getAdditionalData()JSONObjectDatos clave-valor personalizados establecidos a través del dashboard o REST API. Máximo 2048 bytes.
getTemplateId()StringUUID de plantilla, si se envió usando plantillas.
getAndroidNotificationId()intID de notificación nativa de Android.
getLargeIcon()StringURL o nombre de recurso del ícono grande.
getSmallIcon()StringNombre de recurso del ícono pequeño.
getSmallIconAccentColor()StringColor de acento del ícono en formato ARGB.
getSound()StringNombre de recurso de sonido reproducido.
getCollapseId()StringClave de colapso para reemplazo de notificación.
getPriority()intPrioridad de Android (-2 a 2).
getLedColor()StringColor LED en formato ARGB.
getLockScreenVisibility()intVisibilidad en pantalla de bloqueo: 1 = public, 0 = private, -1 = secret.
getFromProjectNumber()StringNúmero de proyecto del remitente.
getGroupedNotifications()List<OSNotification>Notificaciones incluidas en un resumen.
getGroupKey()StringClave de grupo usada en resúmenes.
getGroupMessage()StringTexto de resumen.
getBackgroundImageLayout()BackgroundImageLayoutObjeto para diseño de imagen de fondo y colores de texto.
getActionButtons()List<ActionButton>Botones de acción con ícono, texto e ID.
getRawPayload()StringCadena JSON completa sin procesar del payload.

Campos de iOS

PropertyTypeDescripción
bodyNSStringTexto del cuerpo de la notificación.
titleNSStringTítulo de la notificación.
launchURLNSStringURL abierta cuando se hace clic en la notificación.
notificationIdNSStringUUID de notificación de OneSignal.
additionalDataDictionarydata clave-valor personalizado establecido a través del dashboard o REST API. Máximo 2048 bytes.
templateIdNSStringUUID de plantilla, si se envió usando plantillas.
subtitleNSStringTexto del subtítulo.
categoryNSStringIdentificador de categoría de iOS.
threadIdNSStringUsado para agrupar notificaciones en hilos (iOS 10+).
badgeNSIntegerValor absoluto de insignia.
badgeIncrementNSIntegerCantidad para incrementar la insignia.
contentAvailableBOOLSi content-available=1, activa recuperación en segundo plano.
mutableContentBOOLSi mutable-content=1, activa una Notification Service Extension.
actionButtonsNSArrayBotones de acción de iOS.
rawPayloadNSDictionaryJSON completo sin procesar del payload.
parseWithApnsMethodConvierte payload APNS sin procesar en un OSNotification. Usar en service extensions.

OSNotificationAction (eventos de clic)

Describe la interacción del usuario con la notificación.
PropertyTypeDescripción
actionIdStringEl ID del botón de acción al que se hizo clic.
typeenumOpened (toque predeterminado) o ActionTaken (toque de botón).

Estructura de payload personalizado de OneSignal

Todas las notificaciones de OneSignal incluyen un objeto especial "custom" en el payload:
{
  "custom": {
    "i": "the-notification-id"
  }
}
Esta clave es requerida para que los SDKs de OneSignal procesen la notificación. Si falta, las notificaciones no activarán eventos de clic ni analíticas. Si envías pushes desde otro servicio a dispositivos que también usan OneSignal, filtra por esta clave para evitar procesamiento duplicado. Consulta Push payload handling para más información.

Mover additionalData a la raíz de APNS

Para apps de iOS, puedes colocar los campos de additionalData en la raíz del payload de APNS en lugar de dentro del diccionario custom. Esto simplifica el acceso en manejadores de notificaciones personalizados. 1. Habilitar a través de la API Usa el API Update an app y establece:
{
  "additional_data_is_root_payload": true
}
2. Enviar un push con data Los campos de data aparecen en la raíz del payload de APNS:
{
  "aps": {
    "alert": { "title": "Sale", "body": "20% off all items!" }
  },
  "promo_code": "SPRING20"
}
Ahora puedes acceder directamente a promo_code sin verificar el diccionario custom.

Notificaciones restauradas (Android)

El SDK de Android restaura las notificaciones después de un reinicio del dispositivo o de la app.
PropertyTypeDescripción
restoringbooleantrue si la notificación fue restaurada después del reinicio del dispositivo/app.
Verifica la bandera restoring para omitir notificaciones restauradas. Para evitar que notificaciones antiguas se restauren por completo, establece un TTL (time-to-live) corto o 0 al enviar.

Formatos de push token

  • iOS Push (APNS): 64 caracteres, solo hexadecimal (0-9, a-f). deviceToken.map {String(format: "%02x", $0)}.joined()
  • Android Push (FCM): Típicamente 163 caracteres, alfanumérico, puede contener guiones, dos puntos y guiones bajos.

Preguntas frecuentes

¿Cuál es el tamaño máximo del payload?

Los payloads de notificaciones push están limitados a 4096 bytes en total. El campo additionalData está limitado a 2048 bytes. Para evitar truncamiento, mantén tu payload total por debajo de 3500 bytes.

¿Cómo identifico una notificación de OneSignal en el payload sin procesar?

Todas las notificaciones de OneSignal incluyen un objeto "custom" con una clave "i" que contiene el ID de la notificación. Verifica esta clave para distinguir las notificaciones de OneSignal de las enviadas por otros proveedores.

¿Puedo acceder a additionalData en la raíz del payload de APNS?

Sí. Habilita additional_data_is_root_payload a través del API Update an app para colocar los campos de additionalData en la raíz de APNS en lugar de dentro del diccionario custom. Consulta Mover additionalData a la raíz de APNS para más detalles.

Categorías de notificación de Android

Configura canales de notificación para dispositivos Android 8.0+.

Service Extensions móviles

Añade contenido enriquecido, insignias y seguimiento de entrega confirmada.

Referencia del SDK móvil

Referencia completa de los métodos y listeners del SDK móvil de OneSignal.