ver ubicacion segundo recuperar plano pantalla notificaciones historial funciona como centro borradas bloqueada iphone networking ios4 background location

recuperar - ubicacion en segundo plano iphone



¿Se puede activar la aplicación de iPhone en segundo plano para un cambio de ubicación significativo en la red? (2)

Sí. Puede hacer su procesamiento de red basado en eventos de cambio significativo.

Cuando se despierte en el estado de fondo en un cambio significativo (de estado terminado o suspendido), puede realizar su solicitud http. Si descubre que su aplicación se está terminando antes de finalizar su solicitud HTTP, puede solicitar un tiempo de procesamiento de fondo adicional a través del método beginBackgroundTaskWithExpirationHandler : en UIApplication.

Pasé un poco de tiempo en viajes cortos en tren para probar esto. :)

Estoy trabajando en una aplicación que controla los cambios de ubicación significativos en el fondo. He estado leyendo todas las respuestas (bueno, ¡creo que todas!) Sobre ios4 y el ciclo de vida de la aplicación, pero lo que no puedo averiguar es si puedo o no hacer acceso a la red cuando la aplicación se activa en segundo plano Como resultado de un cambio de ubicación significativo.

La aplicación actualmente hace acceso a la red a través de sockets TCP. El zócalo se apaga cuando se suspende la aplicación.

¿Puedo volver a conectar el zócalo, recibir algunos datos, enviar la nueva ubicación y luego apagar el zócalo mientras todavía estoy en segundo plano como resultado de recibir el evento de cambio de ubicación? ¡Es difícil probar mientras está parado en la oficina! Podemos suponer que la actividad de la red tarda menos de 10 segundos en completarse. También asuma que la aplicación no está registrada como una aplicación de voip (podría / debería ser? ...)

¿Algunas ideas?


Solo me gustaría confirmar la respuesta de RedBlueThing con algunos detalles.

Ahora uso lo siguiente para lograr esto. bgTask se declara como UIBackgroundTaskIdentifier

bgTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler: ^{ [[UIApplication sharedApplication] endBackgroundTask:bgTask]; }]; // Now call methods doing network activity // ... // WHEN I KNOW THE LAST ACTION HAS COMPLETED USE THIS BLOCK OF CODE if (bgTask != UIBackgroundTaskInvalid) { [[UIApplication sharedApplication] endBackgroundTask:bgTask]; bgTask = UIBackgroundTaskInvalid; }

Espero que esto ayude ya que veo a muchas personas mirando la pregunta.