son sirven segundo que plano para las datos como cerrar aplicaciones actualizaciones actividad activar ios background reachability

ios - datos - para que sirven las aplicaciones en segundo plano



¿Cómo la aplicación en segundo plano puede verificar la conexión a Internet, IOS? (2)

La aplicación My 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 solicitud se envía al servidor de inmediato. si el usuario está usando la aplicación en modo fuera de línea, almacenaré la solicitud localmente, de modo que pueda subirla cuando Internet esté disponible. Estoy usando la clase de accesibilidad para verificar la disponibilidad de internet. La accesibilidad funciona bien con la aplicación. No puedo lograr el siguiente escenario. He almacenado la solicitud ya que el usuario está trabajando en modo fuera de línea, es decir, mientras que el usuario empujará la aplicación en segundo plano haciendo clic en el botón de inicio en iPhone. después de un tiempo, el usuario activará la conexión wifi o celular en su dispositivo. cuando el usuario habilita la conexión a Internet, mi aplicación que está en segundo plano debe recibir una notificación y debe comenzar a enviar la solicitud al servidor. ¿Cómo puedo lograr esta funcionalidad? Muchas aplicaciones iOS pueden tener este mismo requisito. ¿Cómo lo están haciendo? ¿alguna idea?

Traté de seguir el paso para lograr esto, pero no tuve éxito. Lo que estoy haciendo mal aquí, ayúdame.

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

2) Si agrego un observador para kReachabilityChangedNotification dentro de la aplicacióndidbecomeActive, 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 a menos que su aplicación tenga uno de esos usos específicos (citando el documento de Apple):

El soporte para algunos tipos de ejecución en segundo plano debe ser declarado previamente por la aplicación que los utiliza. Una aplicación declara compatibilidad con un servicio utilizando su archivo Info.plist. Agregue la clave UIBackgroundModes a su archivo 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 utilizando AirPlay).
* ubicación: la aplicación mantiene informados a los usuarios de su ubicación, incluso mientras se ejecuta en segundo plano.
* voip: la aplicación proporciona la capacidad para que el usuario realice llamadas telefónicas usando una conexión a Internet.
* Newsstand-content: la aplicación es una aplicación de Kiosko que descarga y procesa contenido de revistas o periódicos en segundo plano.
* accesorio externo: la aplicación funciona con un accesorio de hardware que necesita entregar actualizaciones en un horario regular a través del marco de Accesorio externo.
* bluetooth-central: la aplicación funciona con un accesorio Bluetooth que necesita entregar actualizaciones en un horario regular a través del Core Bluetooth framework.
* bluetooth-periférico: la aplicación es compatible con la comunicación Bluetooth en modo periférico a través del Core Bluetooth framework.

Solo puede verificar la accesibilidad nuevamente al reentrar en primer plano.


Llegué a manejar el mismo escenario cuando estaba en un proyecto, pero llegué a saber que, por defecto, en el estado de fondo, la aplicación se queda solo por un tiempo corto, 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 está ejecutando código. Por lo tanto, su notificación implementada personalizada no funciona. Debe volver a consultar NetworkReachability at Wakeup Time en los métodos de delegado de la aplicación:

applicationWillEnterForeground: applicationDidBecomeActive

esto fue lo mejor que hice para manejar ese problema, espero que ayude