¿Cómo la aplicación en segundo plano puede verificar la connection a Internet, IOS?

Mi aplicación Iphone tiene 2 modos, modo en línea y modo fuera de línea. si el usuario está utilizando la aplicación en modo en línea, la request se envía al server de inmediato. si el usuario está utilizando la aplicación en modo fuera de línea, almacenaré la request localmente, para que pueda uploadla cuando haya Internet disponible. Estoy usando la class de accesibilidad para verificar la disponibilidad de internet. Alcance está funcionando bien con la aplicación. No puedo lograr el siguiente escenario. Tuve una request almacenada cuando el usuario está trabajando en modo fuera de línea, significa que el usuario presionará la aplicación en segundo plano onclick en el button Inicio del iPhone. después de algún time, el usuario activará la connection Wi-Fi o celular en su dispositivo. cuando el usuario habilita la connection a internet, mi aplicación que se encuentra en segundo plano debe recibir una notificación y debe comenzar a enviar la request al server. ¿Cómo puedo lograr esta funcionalidad? Muchas aplicaciones iOS pueden tener el mismo requisito. como lo estan haciendo? ¿alguna idea?

Intenté el siguiente paso para lograr esto, pero no tuve éxito. ¿Qué estoy haciendo mal aquí? Ayúdame.

1) Agregué el observador para kReachabilityChangedNotification dentro del método de delegado applicationDidEnterBackground. pero mi aplicación no puede escuchar la notificación Kreachabiliychaged, en este método.

2) Si agrego un observador para kReachabilityChangedNotification dentro de applicationDidbecomeActive, entonces mi aplicación puede escuchar Kreachabiliychagednotification.

¿Por qué IOS no permite escuchar Kreachabiliychagednotification cuando la aplicación está en segundo plano?

La respuesta es que no puede hacerlo a less que su aplicación tenga uno de esos usos específicos (citando el documento de Apple):

El soporte para algunos types de ejecución de background debe ser declarado por adelantado por la aplicación que los utiliza. Una aplicación declara compatibilidad con un service que utiliza su file Info.plist. Agregue la key UIBackgroundModes a su file Info.plist y establezca su valor en una matriz que contenga una o más de las siguientes cadenas:

* audio: la aplicación reproduce contenido audible para el usuario mientras está en segundo plano. (Este contenido incluye la transmisión de contenido de audio o video usando AirPlay).
* location: la aplicación mantiene a los usuarios informados de su location, incluso mientras se está ejecutando en segundo plano.
* voip: la aplicación ofrece la posibilidad de que el usuario realice llamadas telefónicas mediante una connection a Internet.
* newsstand-content-La aplicación es una aplicación Kiosco que descarga y procesa contenido de revistas o periódicos en segundo plano.
* external-accessory-La aplicación funciona con un accesorio de hardware que necesita entregar actualizaciones de forma regular a través del marco de accesorios externos.
* bluetooth-central: la aplicación funciona con un accesorio Bluetooth que necesita entregar actualizaciones en un horario regular a través del marco Core Bluetooth.
* bluetooth-peripheral-La aplicación admite la comunicación Bluetooth en modo periférico a través del marco Core Bluetooth.

Solo puede verificar si la accesibilidad vuelve a entrar en primer plano.

llegué a manejar el mismo escenario cuando estaba en un proyecto, pero llegué a saber que, por defecto, la aplicación de estado de background se queda solo por un corto período de time, la mayoría de las aplicaciones pasan al estado suspendido poco después. Eso significa que la aplicación está en segundo plano pero no ejecuta el código. Entonces, su notificación implementada personalizada no funciona. Debe consultar NetworkReachability en Wakeup Time en los methods de delegado de la aplicación:

applicationWillEnterForeground: applicationDidBecomeActive 

este fue el mejor que hice para manejar ese problema, espero que ayude