Saltar al contenido principal
Las notificaciones push que envías desde OneSignal primero deben ir a los diferentes servicios push (por ejemplo, FCM, APNS, HMS). Desde los servicios push, los mensajes se entregan al dispositivo de cada usuario. En tu dashboard de OneSignal Reportes de mensajes push:
  • Entregado significa que la notificación push fue entregada exitosamente a los servicios push. Recibimos la respuesta de los servicios push.
  • Confirmado significa que el SDK de OneSignal en el dispositivo recibió la notificación. Recibimos este estado directamente del dispositivo de cada usuario.
Si tu notificación fue “Entregada” pero no “Confirmada” y no apareció en el dispositivo (o se retrasó), esta guía te ayuda a solucionar por qué.

Requisitos previos

Para solucionar problemas efectivamente, reúne lo siguiente:
Si solo tienes el External ID, busca la suscripción en la pestaña Audience > Subscriptions usando filtros como Device Type, Last Session e IP Address.

Problemas a nivel de dispositivo

Elementos controlados por el usuario en el dispositivo que pueden afectar la entrega de notificaciones push.

Estado de permiso push y suscripción

En el dispositivo, verifica la Configuración de Notificaciones de la app. Verifica que los permisos de notificaciones estén habilitados. Luego abre la app. Es imperativo que abras la app en el dispositivo para que nuestro SDK actualice el estado de suscripción y otras propiedades. En tu dashboard de OneSignal Audience > Subscriptions:
  • Busca el Subscription ID
  • Si no tienes el Subscription ID, intenta encontrarlo buscando el External ID y/o filtrando por Device Type, Last Session e IP Address.
Deberías ver que la Suscripción push tiene un estado push de “Subscribed”.

Categorías de Android deshabilitadas

Si el dispositivo es Android, verifica la App de Configuración > Notificaciones > Tu App, deberías ver “Mostrar notificaciones” habilitado y todas las categorías debajo habilitadas. Si tienes una categoría deshabilitada, no recibirás notificaciones de esa categoría. En este ejemplo, la Categoría Abandoned Cart - Urgent está desactivada. Si esta categoría se usa en una notificación, el dispositivo no recibirá la notificación.

La imagen muestra la categoría deshabilitada para tu app en el dispositivo, por lo que al enviar con esa categoría, el dispositivo no recibirá este push.

Si no se establece ninguna categoría, OneSignal usa una categoría predeterminada “Miscellaneous”. Asegúrate de que esta categoría esté habilitada si la ves deshabilitada. Más detalles en Android Notification Categories.
Algunos dispositivos Samsung automáticamente desactivan las categorías para las apps de forma predeterminada. Consulta detalles en esta publicación de reddit y estos artículos de Android Police y artículo 2.
Para intentar educar a tus usuarios sobre esto, puedes configurar mensajes in-app para orientar a usuarios de Samsung y mostrar instrucciones para habilitar categorías. Proporcionamos un tutorial Example: Target certain Android manufacturers and devices.

La app Android está Forzada a Detenerse

Cuando una app Android está Forzada a Detenerse, el dispositivo evitará que se muestren notificaciones push para esa app. Para ayudar a ahorrar batería, algunos fabricantes de Android como Xiaomi, Huawei, Samsung y otros han implementado gestión agresiva de procesos en segundo plano que puede Forzar Detener tu app cuando el usuario la desliza (mientras omite apps más grandes como Facebook, Whatsapp, Gmail, etc). Hay mucha información sobre esto en línea como: https://dontkillmyapp.com/ y escribimos un post de blog sobre ello que generó mucha discusión en Reddit. Dependiendo del dispositivo, es posible que necesites seguir los siguientes pasos para evitar que esto suceda:
  1. Permitir Actividad en Segundo Plano:
    • Configuración > Apps > Tu App > Batería > Permitir actividad en segundo plano.
  2. Deshabilitar Función de Apps en Suspensión:
    • Configuración > Batería y cuidado del dispositivo > Batería > Límites de uso en segundo plano > Apps en suspensión > Elimina tu app de esta lista.
  3. Bloquear la App en Apps Recientes:
    • Abre tu app, luego toca el botón de Apps Recientes.
    • Encuentra tu app, toca y mantén presionada la ventana de la app, luego Bloquear esta app (disponible en algunos modelos Samsung).
  4. Habilitar Inicio Automático para la App (En Algunos Dispositivos):
    • Configuración > Apps > Tu App > Permisos > Inicio automático > Habilitar.
  5. Deshabilitar Optimización de Batería Adaptativa para la App:
    • Configuración > Batería y cuidado del dispositivo > Batería > Más configuraciones de batería > Batería adaptativa > Desactivar (o excluir tu app).
Mientras pruebas, asegúrate de que tu app esté ejecutándose mientras envías la notificación. Consulta Obtener un Registro de Depuración para verificar que estés recibiendo el mensaje.

Conexión de red

Los dispositivos deben estar en línea para recibir notificaciones push. Si tu dispositivo está apagado, en modo avión, tiene una conexión a internet inestable o sin conexión, el push no se mostrará hasta que se establezca una conexión apropiada. Consulta Parámetro Time To Live (TTL) para detalles.

Conexión Wifi, Firewall o VPN

Verifica la red / WiFi a la que estás conectado ya que puede haber cerrado tu conexión a los servidores de Apple o Google. Intenta deshabilitar y volver a habilitar tu conexión a internet. También prueba sin wifi usando datos celulares. Si estás restringiendo el tráfico hacia o desde Internet, necesitas configurarlo para permitir conectividad con los servicios push.

Modos No molestar y concentración

Si el dispositivo usa un modo “No molestar” o “Concentración”, puede evitar la visualización de notificaciones o agrupar notificaciones juntas de manera diferente a otras notificaciones de tu app. Si deslizas para cerrar las notificaciones agrupadas del modo concentración, no aparecerán más tarde en las notificaciones ya agrupadas para tu app en el centro de notificaciones del dispositivo. Verifica y deshabilita estos modos en el dispositivo.
  • iOS: Configuración > Notificaciones > Modo Concentración
  • Android: Configuración > Notificaciones > Modo Concentración
Luego envíate algunas notificaciones de prueba para verificar.

Comportamiento de agrupación de notificaciones

Junto con los Modos de Concentración, diferentes versiones de Android pueden tener su propio comportamiento de agrupación de notificaciones. Soluciones para intentar:
  1. Intenta crear categorías de notificación de Android ya sea en tu dashboard de OneSignal o usando código. Luego establece este ID en todas tus notificaciones para ver si tiene algún efecto.
  2. Revisa configuraciones específicas del dispositivo: En el dispositivo, verifica Configuración > Notificaciones > Configuración avanzada para cualquier opción de agrupación específica del dispositivo.
  3. Verifica límites de notificación: Verifica si la optimización de batería o las funciones de suspensión de apps están habilitadas para tu app en este dispositivo específico.

Modo de ahorro de energía y optimización de batería

Dispositivos iOS: Deshabilita el modo de ahorro de energía mientras pruebas o carga el dispositivo. Dispositivos Android: Hay varios nombres diferentes para la configuración de “Optimización de Batería” dependiendo del fabricante del dispositivo y la versión del sistema operativo. En la Configuración de Batería, establece la app en “Sin restricciones” o “No optimizada”. Si no tienes esta configuración, busca Optimización de Batería o Modo de Ahorro de Energía o Ahorro de Energía o Límites de uso en segundo plano o Configuración de Batería Adaptativa y deshabilita para la app o mientras pruebas.

Peculiaridades del emulador

Tu dispositivo emulador necesita:
  1. Tener los Google Play Services (Google Play Store) instalados
  2. Iniciar con arranque en frío
  • Abre Android Studio Device Manager
  • Selecciona tu dispositivo, asegúrate de que tenga la Google Play Store instalada y haz clic en Edit
  • Ve a Configuración Adicional o botón Más
  • Establece la Opción de arranque en Cold Boot
  • Guarda cambios y reinicia el emulador

Enviar push

Cosas comunes para verificar al enviar notificaciones push.

Dispositivo no está en la audiencia del mensaje

Tu suscripción puede no estar incluida en la audiencia objetivo del mensaje. Si usas Segments o filtros, asegúrate de que tu suscripción cumpla con los criterios. Si orientas por External ID u otros aliases, verifica que esté configurado y que estés enviando al correcto.

Collapse ID

Si estás agregando un Collapse ID a tus mensajes, la notificación más reciente reemplazará las notificaciones más antiguas con el mismo ID. Verifica que no estés configurando esto o configurándolo correctamente para las notificaciones que quieres reemplazar. Consulta Remove notifications & TTL para detalles.

Modo Doze de Android, prioridad y mensajes despriorizados (throttled)

Las funciones de ahorro de energía de Android (modo Doze y App Standby) pueden retrasar o bloquear notificaciones. Estos modos entran en efecto automáticamente cuando el dispositivo está desenchufado y estacionario por un período de tiempo. Si el dispositivo está en estos modos, enviar mensajes de alta prioridad despertará la app. Sin embargo, enviar demasiados puede causar que tus notificaciones sean despriorizadas y enviadas con prioridad normal. FCM indica:
Los mensajes de alta prioridad en Android están destinados a contenido sensible al tiempo, visible para el usuario, y deberían resultar en notificaciones visibles para el usuario. Si FCM detecta un patrón en el que los mensajes no resultan en notificaciones visibles para el usuario, tus mensajes pueden ser despriorizados a prioridad normal o delegados para manejo por Google Play Services.

Desarrolladores: Código que bloquea o elimina notificaciones

Prevención de notificaciones en primer plano de OneSignal

Nuestro SDK tiene un método Foreground Event Listener. Dentro de este método puedes llamar a event.preventDefault() que bloqueará que la notificación se muestre mientras la app esté abierta. Mientras pruebas, asegúrate de que la app esté en segundo plano o cerrada para verificar que esto no esté bloqueando notificaciones.

Android Service Extension bloqueando notificaciones

Si configuraste la Android Notification Service Extension, este es el punto de entrada para tu notificación a la app. Puedes estar bloqueando notificaciones con el método event.preventDefault(). Verifica tu código para ver si esto se está usando y bajo qué condiciones.

iOS UNUserNotificationCenterDelegate bloqueando notificaciones en primer plano

Si configuraste el iOS UNUserNotificationCenterDelegate, entonces puedes tener código bloqueando que el dispositivo iOS muestre la notificación mientras está en primer plano. Elimina este código personalizado y usa nuestro método Foreground Event Listener del SDK en su lugar.

Limpieza de insignia de iOS

La limpieza de insignias puede afectar las notificaciones. Cuando una app limpia insignias, puede eliminar notificaciones existentes del Centro de Notificaciones. El SDK de OneSignal también limpiará insignias cuando la app se abra, lo que elimina las notificaciones. Consulta Badges para detalles sobre cómo evitar esto.

Eliminar notificaciones

Apple proporciona el método removeAllDeliveredNotifications() para eliminar todas las notificaciones entregadas de tu app del Centro de Notificaciones. Consulta la documentación de desarrollador de Apple sobre removeAllDeliveredNotifications().

Conflictos de Firebase

Si estás usando Firebase Messaging SDK, verifica tu archivo Android Manifest para la siguiente línea. Esto puede estar bloqueando tus notificaciones.
com.google.firebase.iid.FirebaseInstanceIdReceiver

Pruebas

Sigue Obtener un Registro de Depuración para agregar nuestros métodos de depuración verbose a la app. Ten la app ejecutándose en segundo plano y envíate un mensaje a ti mismo. Si no estás recibiendo el evento de mensaje, contacta a support@onesignal.com con la siguiente información:
  • El registro completo de la prueba. Consulta Obtener un Registro de Depuración para detalles.
  • El enlace al reporte de mensaje en tu dashboard onesignal.com que enviaste al depurar. Esto se puede encontrar en Delivery > Sent Messages. Solo haz clic en el mensaje que enviaste, luego copia y pega la URL y compártela con nosotros.

Verificar el estado de tu app

Ejecuta lo siguiente para verificar el estado actual de tu app. Reemplaza “com.company.appname” con el nombre de tu paquete.
adb shell dumpsys package com.company.appname | grep stopped
Si ves stopped=false si todo está bien, de lo contrario verás stopped=true entonces tu app fue forzada a cerrar de alguna manera. Otra forma es enviar algunas notificaciones y verificar la siguiente entrada de logcat de GCM.
W/GCM-DMM: broadcast intent callback: result=CANCELLED forIntent {
   act=com.google.android.c2dm.intent.RECEIVE pkg=com.onesignal.example (has extras)
}
Si ves este intent cancelado arriba, entonces tu app no pudo iniciarse para procesar la notificación. Algunos fabricantes de dispositivos pondrán en lista blanca apps para que no entren en el estado de cerrado forzado. Ejemplos como Gmail y Whatsapp.

Depuración Adicional

FCM proporciona una REST API para consultar la última vez que un dispositivo se ha conectado a FCM. Consulta la siguiente documentación de Google sobre cómo obtener esto. https://developers.google.com/instance-id/reference/server#get_information_about_app_instances