Saltar al contenido principal

Descripción general

La Entrega confirmada rastrea cuándo un dispositivo realmente recibe una notificación push enviada a través de OneSignal. Cuando el SDK de OneSignal en el dispositivo recibe un push, envía un evento de confirmación de vuelta a OneSignal que contiene el ID de la notificación y el ID de suscripción del dispositivo. Esto le permite ver exactamente qué suscripciones recibieron qué notificaciones. En su panel de OneSignal, la Entrega confirmada aparece en el Informe de mensajes como Confirmed (o Received). Para todas las métricas de entrega y participación, consulte el Glosario de métricas.
Flujo de entregas confirmadas
La Entrega confirmada es diferente de “Delivered.” Los servicios push de plataforma (APNs, FCM, ADM, HMS) informan si una notificación fue aceptada por el servicio, no si el dispositivo realmente la recibió. La Entrega confirmada es la confirmación del lado del dispositivo.

Requisitos

Limitaciones específicas de la plataforma

iOS
  • Requiere tanto la configuración de Notification Service Extension como del App Group.
  • APNs mantiene solo un mensaje por aplicación cuando está fuera de línea. Si se envían múltiples pushes mientras está fuera de línea, solo se entrega el último.
Huawei
  • Compatible solo para el data tipo de mensaje de Huawei.
  • Para el tipo message, Huawei proporciona datos de recibo solo en su propio panel.
Web
  • Safari no admite Entrega confirmada.

Solución de problemas de Entrega confirmada

Si no recibe notificaciones push en absoluto, consulte primero Notificaciones no mostradas.

iOS

La Entrega confirmada en iOS requiere dos cosas funcionando juntas:
  1. Una Notification Service Extension (NSE) que ejecuta código de OneSignal cuando llega un push
  2. Un App Group compartido entre el target de su aplicación principal y el target de la NSE para que puedan intercambiar datos
Si alguno falta o está mal configurado, el dispositivo recibe el push pero nunca lo reporta de vuelta a OneSignal. Verifique su configuración de iOS
1

Confirme que el target de la NSE existe y tiene el código correcto

En Xcode, verifique que tiene un target OneSignalNotificationServiceExtension listado bajo los targets de su proyecto. Si no existe, siga el Paso 2 de la Configuración del SDK de iOS.Abra el archivo NotificationService.swift (o .m) de la NSE. Debe llamar a OneSignalExtension.didReceiveNotificationExtensionRequest dentro de didReceive(_:withContentHandler:). Si el archivo todavía contiene el código de plantilla predeterminado de Apple, reemplácelo con el código NSE de OneSignal.
2

Confirme que la NSE tiene el paquete OneSignalExtension

Seleccione su target de NSE > General > Frameworks and Libraries (o Build Phases > Link Binary With Libraries). Verifique que OneSignalExtension esté listado. El target de la aplicación principal usa OneSignalFramework, pero el target de la NSE debe usar OneSignalExtension — son paquetes diferentes.
3

Verifique que el App Group esté configurado correctamente en ambos targets

El SDK de OneSignal usa un App Group para compartir datos entre su aplicación principal y la NSE. Hay dos formas de configurar esto — elija la que corresponda a su configuración.
  1. Seleccione su target de aplicación principal > Signing & Capabilities > App Groups.
  2. Confirme el App Group.
Si su App Group es group.YOUR_MAIN_APP_BUNDLE_ID.onesignal — donde YOUR_MAIN_APP_BUNDLE_ID es el identificador de bundle del target de su aplicación principal (disponible en General > Identity), siga la pestaña App Group predeterminado. De lo contrario, siga la pestaña App Group personalizado.
  1. Seleccione su target de NSE > Signing & Capabilities > App Groups.
  2. Confirme que el exacto mismo App Group esté listado. Si falta, agréguelo a través de + Capability > App Groups y seleccione el mismo grupo.
Un error común es usar el identificador de bundle de la NSE en lugar del de la aplicación principal:
  • Correcto: group.YOUR_MAIN_APP_BUNDLE_ID.onesignal
  • Incorrecto: group.YOUR_MAIN_APP_BUNDLE_ID.OneSignalNotificationServiceExtension.onesignal
El target de su aplicación principal y el target de la NSE deben tener el mismo identificador de App Group.
Si usa archivos .xcconfig para la configuración de build, verifique que el App Group no esté siendo anulado u omitido en esos archivos.
4

Confirme que los targets de implementación mínima coincidan

Seleccione su target de NSE > General > Minimum Deployments. Este valor debe coincidir con el de implementación mínima del target de su aplicación principal. Una discrepancia puede evitar que la NSE se ejecute en ciertas versiones del sistema operativo.
5

Desmarque "Copy only when installing"

Seleccione su target de aplicación principal > Build Phases > Embed App Extensions. Asegúrese de que “Copy only when installing” esté desmarcado. Si está marcado, la NSE no se incluye durante las builds de desarrollo, por lo que nunca se ejecuta al probar.
6

Verifique los valores de NSExtension en Info.plist

Seleccione su target de NSE > pestaña Info y expanda la clave NSExtension. Confirme que contiene:
<key>NSExtensionPointIdentifier</key>
<string>com.apple.usernotifications.service</string>
<key>NSExtensionPrincipalClass</key>
<string>$(PRODUCT_MODULE_NAME).NotificationService</string>
Si su NSE está escrita en Objective-C, use NotificationService en lugar de $(PRODUCT_MODULE_NAME).NotificationService.
7

Verifique que mutable-content esté configurado

OneSignal establece automáticamente mutable-content: 1 en la carga útil del push, lo que le dice a iOS que invoque la NSE. Si envía pushes a través de la API REST, verifique que no esté estableciendo explícitamente mutable_content: false. Sin mutable-content, iOS no ejecuta la NSE y la Entrega confirmada no puede activarse.
8

Pruebe que la NSE se está ejecutando

Agregue esta línea temporalmente dentro de didReceive antes de la llamada a OneSignal:
bestAttemptContent.body = "[Modified] " + bestAttemptContent.body
Envíese un push de prueba. Si el cuerpo de la notificación comienza con [Modified], la NSE se está ejecutando correctamente. Si no es así, revise los pasos anteriores — la NSE no está siendo invocada. Elimine esta línea después de probar.Para depuración avanzada de NSE con registros de Xcode Console, consulte Depuración de iOS Notification Service Extension.

Android

Web

  • Safari no es compatible.
  • Para otros navegadores, asegúrese de que la migración al SDK v16 esté completa:
    • Inicialización correcta del SDK:
      <script src="https://cdn.onesignal.com/sdks/web/v16/OneSignalSDK.page.js" defer></script>
      
    • Referencia correcta del Service Worker:
      importScripts("https://cdn.onesignal.com/sdks/web/v16/OneSignalSDK.sw.js");
      

Preguntas frecuentes

¿Por qué mis números de Entrega confirmada son bajos o faltan?

Las causas más comunes son problemas de configuración (especialmente en iOS), dispositivos inactivos y limitaciones de la plataforma.
  1. Mala configuración de iOS: Falta o es incorrecta la Notification Service Extension o el App Group. Consulte Solución de problemas de Entrega confirmada en iOS arriba.
  2. Dispositivos inactivos o abandonados: Los dispositivos que están fuera de línea o ya no están en uso no reciben pushes ni envían eventos de Entrega confirmada. Consulte ¿Cómo manejo los dispositivos inactivos? a continuación.
  3. Limitaciones de la plataforma: El tipo message de Huawei y Safari no admiten Entrega confirmada.
  4. Cierre forzado en Android: Algunos fabricantes de dispositivos tratan deslizar la aplicación como un cierre forzado, lo que detiene los eventos del SDK. Consulte la Guía de push móvil no mostrado.

¿Cómo manejo los dispositivos inactivos?

Los dispositivos que están fuera de línea o abandonados no reciben notificaciones push ni envían eventos de Entrega confirmada. Esto es común cuando los usuarios reemplazan o abandonan dispositivos. Para reactivar usuarios inactivos:
  • Use Audience Activity para reenviar a usuarios que no confirmaron la entrega.
  • Cree Segmentos basados en Last Session (por ejemplo, inactivos por más de 90 días).
    • Combine con un Journey de reenganche para recuperarlos.
    • Diríjase periódicamente a usuarios inactivos para eliminar dispositivos inalcanzables.
Consulte ¿Cuándo se actualizan los estados de suscripción push? para más detalles sobre cómo OneSignal actualiza el estado de las suscripciones.

¿Por qué muestra Confirmada pero no aparece en mi dispositivo?

Un evento de Entrega confirmada significa que el dispositivo recibió la carga útil del push. En raras ocasiones, la notificación puede no mostrarse. Posibles causas:
¿Necesita ayuda?Chatee con nuestro equipo de Soporte o envíe un correo electrónico a support@onesignal.comPor favor incluya:
  • Detalles del problema que está experimentando y pasos para reproducir si están disponibles
  • Su ID de aplicación de OneSignal
  • El ID externo o ID de suscripción si corresponde
  • La URL del mensaje que probó en el panel de OneSignal si corresponde
  • Cualquier registro o mensaje de error relevante
¡Estamos felices de ayudar!