Saltar al contenido principal

Referencia del payload OSNotification

Esta página explica la estructura y campos del payload de notificación push de OneSignal a través de la clase OSNotification. Usa esta referencia al recibir o manejar notificaciones en tu app móvil.
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 activan un listener de eventos de notificación que devuelve un objeto OSNotification.
  • Android: OneSignal.setNotificationWillShowInForegroundHandler(...)
  • iOS: notificationReceivedBlock o UNNotificationServiceExtension
Usa este objeto para acceder al título de la notificación, cuerpo, datos y otras propiedades. La clase OSNotification proporciona todos los datos del payload de notificación accesibles dentro de los listeners de eventos de notificación del SDK. Fusiona las clases originales OSNotification y OSNotificationPayload en una única interfaz basada en getters.

Campos de Android

PropiedadTipoDescripció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 = público, 0 = privado, -1 = secreto.
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

PropiedadTipoDescripció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.
parseWithApnsMétodoConvierte 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.
PropiedadTipoDescripció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 o analíticas.Si envías un push desde un servicio diferente a un dispositivo que ya usa OneSignal, evita duplicar notificaciones.

Opcional: mover additionalData a la raíz de APNS

Para apps de iOS, puedes hacer que additionalData esté disponible en la raíz del payload de APNS para un acceso más fácil en manejadores personalizados.
  1. Habilitar en configuración de app Usa el API Update an app y establece:
{
  "additional_data_is_root_payload": true
}
  1. Enviar push con data Estará disponible en la raíz del payload de APNS. Ejemplo:
{
  "aps": {
    "alert": { "title": "Sale", "body": "20% off all items!" }
  },
  "promo_code": "SPRING20"
}
Ahora puedes acceder directamente a promo_code sin verificar el diccionario personalizado.

Notificaciones restauradas

Las notificaciones serán restauradas por el SDK de Android después de un reinicio o reinicio de app.
PropiedadTipoDescripción
restoringbooleantrue si la notificación fue restaurada después del reinicio del dispositivo/app.
Las notificaciones restauradas pueden omitirse usando la bandera restoring. Para evitar restaurar contenido antiguo, establece un TTL (time-to-live) corto o 0 en tus notificaciones.

Temas relacionados