Bloquear iPhone desconecta sockets en iOS 5 solamente

Estoy trabajando en una aplicación cliente-server basada en socket.

Cuando un usuario que ejecuta cualquier iDevice en iOS 4, 4.2.1, 4.3.2, etc., hace clic en el button de locking mientras está conectado al server, la connection permanece viva.

Sin embargo, cuando hago clic en el button de locking en cualquier dispositivo que ejecute iOS 5, la connection se destruye inmediatamente y al volver a la aplicación desde la pantalla de locking, se me presenta mi NSAlertView al que se llama cuando se llama al método NSStreamEventErrorOccurnetworking.

He probado varios clientes con la aplicación, y cada uno de ellos con iOS 5 tiene el mismo problema, sin importar el dispositivo (iPod 2g, iPod 4g, iPhone 3GS, iPhone 4).

¿Hubo algún cambio en la forma en que los dispositivos iOS 5 manejan los lockings? ¿Cómo puedo arreglar esto?

EDITAR:

Debo mencionar que el proyecto se inició en Xcode 4 (iOS 4 SDK) y ahora se está utilizando en Xcode 4.2 .. No sé si esto es importante o no.

Solutions Collecting From Web of "Bloquear iPhone desconecta sockets en iOS 5 solamente"

Al igual que en los comentarios, hay una nueva 'característica' en iOS 5 que envía la aplicación al background cuando el usuario bloquea el dispositivo, esto efectivamente mata las actividades de la networking.

Use beginBackgroundTaskWithExpirationHandler: para marcar secciones críticas del código que necesita el acceso de socket. Esto debería permitir que el código se ejecute mientras la aplicación está en segundo plano por un corto time. No olvides llamar a endBackgroundTask cuando hayas terminado.

En realidad, no creo que en iOS 5, cuando bloquee el dispositivo, una aplicación activa se enviará al modo de background, simplemente se volverá inactiva. He hecho algunas testings, si se inició una descarga de networking, luego envío la aplicación al background, el zócalo de la networking no se elimina, sino que se suspende. puede esperar más de 10 segundos (se supone que el time extendido pnetworkingeterminado de su aplicación es de 10 segundos antes de que su aplicación se suspenda en segundo plano), luego traiga la aplicación al primer plano, puede ver los resúmenes de descarga de networking a medio path. Mientras que si bloquea el dispositivo y lo desbloquea de inmediato, se encontrará con un error de networking porque su connection ha sido desconectada. Esto me dice que ios 5 no solo envía su aplicación al background cuando el dispositivo está bloqueado, sino que también desconectará el conector de networking de inmediato (usar el time de tarea de background extendido probablemente no lo ayudaría)