puede - ios 10 ipad mini 1
Las notificaciones push de fondo de iOS no se reciben después de 2-3 horas de inactividad (4)
No hay solución alternativa como tal. Puede probar PushKit
(notificaciones push iOS VOIP), que son más confiables pero solo iOS8 o socket persistente VOIP, que está disponible desde iOS7 (mucho más difícil).
Apple no garantiza la entrega inmediata para las notificaciones push de fondo / recuperación (que contienen: content-available=1
). Esas notificaciones fueron diseñadas para darle a la aplicación la a chance
de actualizar su contenido entre ejecuciones, no para ser '' immediate
'' ni confiable.
iOS decidirá cuándo enviar estas notificaciones basadas en condiciones no documentadas relacionadas con la energía.
En otras palabras, se notificará a tu aplicación, solo cuando iOS decida que no afecta la batería. De mis observaciones, depende de muchas cosas, como:
- si su dispositivo está conectado a la fuente de alimentación,
- usa Wi-Fi de 3G,
- tiempo desde la última notificación,
- aplicación de ancho de banda de energía y datos utilizada al procesar la última, itd ...
- cuándo y cómo se usó el dispositivo en el pasado reciente (pantalla bloqueada / desbloqueada)
Incluso noté la diferencia entre la aplicación que se ejecuta en la sesión de depuración (por Xcode, conectada por cable) - las notificaciones siempre fueron entregadas, y cuando comencé la aplicación desde Springboard / en modo de lanzamiento (diferentes condiciones de energía), entonces comenzó a portarse mal.
Mi aplicación realiza una búsqueda de fondo silenciosa a través de notificaciones automáticas. Todo funciona bien y las notificaciones push enviadas desde nuestro servidor desencadenan accesos silenciosos de fondo como se esperaba, cuando el usuario abrió la aplicación en los últimos 60 minutos o se envió una notificación de inserción en 60 minutos, incluso si el dispositivo está bloqueado.
Sin embargo, cuando el usuario no abre la aplicación durante 2-3 horas o cuando no se envía una notificación de inserción en 2 o 3 horas, la aplicación no recibe la notificación de inserción. He estado registrando la actividad de la aplicación, y he confirmado que:
didReceiveRemoteNotification:fetchCompletionHandler:
no se está llamando al delegado de la aplicación.
Algunos hechos más:
- En la aplicación plist.info, configuré UIRequiresPersistentWiFi en true y UIBackgroundModes en (solo) notificaciones remotas
- La carga útil de notificaciones automáticas solo contiene la clave de contenido disponible
- Después de 2-3 horas de inactividad (ya sea sin enviar notificaciones de envío o sin actividad del usuario), estoy viendo el mismo resultado tanto en mi iPhone 5 como en el iPad 2 con Wi-Fi solo, ambos con iOS 8.1.2. En otras palabras, no importa si la conexión a Internet es celular o Wifi.
- No creo que esté llegando a límites de límite de frecuencia, ya que solo envío como máximo de 1 a 2 notificaciones push por dispositivo por hora.
Según tengo entendido, iOS debe continuar activando la aplicación en segundo plano y permitirle procesar la captura de fondo desde la notificación de inserción, incluso después de horas de inactividad (siempre que el dispositivo esté en funcionamiento y tenga conexión a Internet).
Me pregunto si alguien más ha experimentado esto, y si es así, si ha encontrado una solución alternativa.
¡Gracias por adelantado!
Prueba esto en tu info.plist, funcionó para mí.
Esto activará su aplicación para recibir notificaciones en el modo de fondo.
atravesar
Objetivos> Capacidades> Modos de fondo
Activa los modos de fondo
[[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]];
[[UIApplication sharedApplication] registerForRemoteNotifications];