Las extensiones de servicio de notificaciones te permiten interceptar y modificar notificaciones push antes de que se muestren al usuario. Esto habilita el manejo de datos en segundo plano, estilos personalizados, archivos adjuntos de medios enriquecidos, entrega confirmada y opciones de botones de acción.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.
Puedes acceder a los datos de tus notificaciones push enviadas desde OneSignal a través de la clase OSNotification
Extensión de servicio de notificaciones de Android
Te permite procesar la notificación antes de que se muestre al usuario. Los casos de uso más comunes incluyen:- Recibir datos en segundo plano con o sin mostrar una notificación.
- Anular configuraciones específicas de notificación según la lógica del lado del cliente, como el color de énfasis personalizado, el patrón de vibración u otras opciones de
NotificationCompatdisponibles.
Paso 1: Crear una clase para la extensión de servicio
Crea una clase que implementeINotificationServiceExtension e implementa el método onNotificationReceived.
El parámetro del método onNotificationReceived es event de tipo INotificationReceivedEvent.
La anotación
@Keep es necesaria para evitar que ProGuard o R8 renombre o elimine tu clase durante la minificación.Paso 2: Personalizar la notificación
Los siguientes ejemplos muestran personalizaciones comunes que puedes implementar en la clase de extensión de servicio de notificaciones.- Impedir que se muestre la notificación
- Agregar un campo personalizado
- Cambiar el color y el ícono de la notificación
Usa
event.preventDefault() para suprimir la visualización de la notificación. Luego puedes llamar a event.getNotification().display() para mostrarla más tarde, o no llamarla nunca para descartarla silenciosamente.Paso 3: Agregar la extensión de servicio a tu AndroidManifest.xml
Agrega el nombre de la clase y el valor como meta-data dentro del archivo AndroidManifest.xml en la etiqueta de la aplicación. Ignora cualquier advertencia de “no utilizado”.
XML
com.onesignal.example.NotificationServiceExtension con el nombre completamente calificado de tu clase.
Extensión de servicio de notificaciones de iOS
La UNNotificationServiceExtension te permite modificar el contenido de las notificaciones push antes de que se muestren al usuario y es necesaria para otras funciones importantes como:- Imágenes y medios enriquecidos.
- Entrega confirmada
- Badges
- Botones de acción
- Aperturas influenciadas con Firebase Analytics
Obtener el payload push de iOS
La anulación dedidReceive(_:withContentHandler:) llama a OneSignalExtension.didReceiveNotificationExtensionRequest, que pasa el bestAttemptContent a OneSignal antes de que se muestre al usuario. Puedes leer o modificar bestAttemptContent antes de que se llame a ese método.
En este ejemplo, enviamos una notificación con los siguientes datos:
JSON
data adicionales dentro de la OneSignalNotificationServiceExtension a través de la clave a dentro del diccionario custom de userInfo:
Solución de problemas de la extensión de servicio de notificaciones de iOS
Esta guía es para depurar problemas con imágenes, botones de acción o entregas confirmadas que no aparecen en aplicaciones móviles de iOS.Verifica tu configuración de Xcode
En General > Targets, asegúrate de que tu target de aplicación principal y el target OneSignalNotificationServiceExtension tengan los mismos valores correctos de:- Supported Destinations
- Minimum Deployment (iOS 14.5 o superior)


NSExtension. Asegúrate de ver:
XML

Desactiva “Copy only when installing”
Selecciona tu target de aplicación principal > Build Phases > Embed App Extensions. Asegúrate de que “Copy only when installing” NO esté marcado. Desmárcalo si lo está:
Depuración de la extensión de servicio de notificaciones de iOS
Sigue estos pasos para verificar que la extensión de servicio de notificaciones esté configurada correctamente.1. Actualizar el código OneSignalNotificationServiceExtension
AbreNotificationService.m o NotificationService.swift y reemplaza todo el contenido del archivo con el código a continuación. Esto agrega registros para ayudar a verificar que la extensión se está ejecutando.
Reemplaza YOUR_BUNDLE_ID con tu Bundle ID real.
Los tipos de registro de depuración deben habilitarse en la Consola mediante Action > Include Debug Messages.
2. Cambiar tu esquema activo
Establece tu esquema activo enOneSignalNotificationServiceExtension.

3. Compilar y ejecutar el proyecto
Compila y ejecuta el proyecto en Xcode en un dispositivo real.4. Abrir la consola
En Xcode, selecciona Window > Devices and Simulators.

5. Verificar la consola
En la consola:- Selecciona Action > Include Debug Messages
- Busca
OneSignalNotificationServiceExtensioncomo CATEGORY - Selecciona Start

contents si envías desde la API Crear notificación). En este ejemplo, el payload es:
cURL

Preguntas frecuentes
¿Por qué no se ejecuta mi extensión de servicio de notificaciones en iOS? La extensión solo se ejecuta cuandomutable-content está configurado en el payload de la notificación. OneSignal lo configura automáticamente para notificaciones con archivos adjuntos o botones de acción. Verifica que tu configuración de Xcode coincida con la sección de solución de problemas.
¿Puedo evitar que se muestre una notificación en Android?
Sí. Llama a event.preventDefault() para suprimir la visualización. Luego llama a event.getNotification().display() para mostrarla más tarde, o no la llames nunca para descartarla silenciosamente. Consulta Notificaciones duplicadas para más información.
¿Necesito la anotación @Keep en Android?
Sí. Evita que ProGuard o R8 renombre o elimine tu clase que implementa INotificationServiceExtension durante la minificación.
Páginas relacionadas
Configuración del SDK móvil
Instala y configura el SDK de OneSignal para iOS y Android.
Imágenes y medios enriquecidos
Adjunta imágenes, GIFs y videos a las notificaciones push.
Entrega confirmada
Rastrea la entrega confirmada de notificaciones a dispositivos.
Notificaciones duplicadas
Soluciona notificaciones push duplicadas en todas las plataformas.