iOS: la operación de error de socket no se pudo completar Tubería rota

Estoy enviando algunos datos (bytes de image) desde la aplicación iOS al server de socket (java-desktop) en cada algunos intervalos. Su envío de datos correctamente. Estoy viendo un problema extraño, si la pantalla del dispositivo iOS se apaga al enviar los datos desde la aplicación iOS, y luego si aparezco en el dispositivo, aparece el siguiente error y la aplicación se desconectó con el socket o, a veces, bloquea la aplicación :

Error writing to stream <__NSCFOutputStream: 0x1f5dd120>: Error Domain=NSPOSIXErrorDomain Code=32 "The operation couldn't be completed. Broken pipe" Stream space : 0 NSStreamEventErrorOccurnetworking - Can not connect to the host 

Cuando la pantalla del dispositivo se desactiva, la aplicación My iOS deja de enviar datos al socket. y luego activando la pantalla hacia atrás, la connection del socket se desconecta o se interrumpe el error de la tubería. ¿Cómo resolverlo? Busqué, pero no pude encontrar la solución todavía. ¿Podría alguien informar cuál podría ser la razón de este problema y cómo resolverlo?

Solutions Collecting From Web of "iOS: la operación de error de socket no se pudo completar Tubería rota"

Tienes 2 opciones

1. Desactive el timer de inactividad: este código evitará que su iPhone se ponga en modo de espera mientras su aplicación se está ejecutando. No estoy seguro si esto impide que el dispositivo se bloquee, pero puede evitar que la pantalla se atenúe con la propiedad idleTimerDisabled de UIApplication.

 [UIApplication shanetworkingApplication].idleTimerDisabled = YES; 

De la documentation:

Importante: debe establecer esta propiedad solo si es necesario y debe asegurarse de reiniciarlo en NO cuando ya no exista la necesidad. La mayoría de las aplicaciones deberían permitir que el sistema apague la pantalla cuando transcurra el time de inactividad. Esto incluye aplicaciones de audio. Con el uso apropiado de los services de session de audio, la reproducción y la grabación se realizan de forma ininterrumpida cuando la pantalla se apaga. Las únicas aplicaciones que deberían desactivar el timer inactivo son las aplicaciones de mapeo, juegos o progtwigs similares con interacción esporádica del usuario.

2. Haga una aplicación con soporte de background: puede seguir este tutorial sobre los modos de background en iOS .

Aquí hay una descripción rápida de los cinco modos de background básicos disponibles en iOS:

  • Reproducir audio: la aplicación puede continuar reproduciendo y / o grabando audio en segundo plano.
  • Recibir actualizaciones de location: la aplicación puede continuar recibiendo devoluciones de llamada a medida que cambia la location del dispositivo.
  • Realizar tareas de longitud finita: el caso genérico de "lo que sea", donde la aplicación puede ejecutar código arbitrario durante un time limitado.
  • Descargas de Process Kiosco de prensa: específicas de las aplicaciones Kiosco, la aplicación puede download contenido en segundo plano.
  • Proporcionar services de voz sobre IP (VoIP): la aplicación puede ejecutar cualquier código arbitrario en segundo plano. Por supuesto, Apple limita su uso para que su aplicación también tenga que ofrecer service de VoIP.

El modo de background VOIP le permite a su aplicación ejecutar código arbitrario mientras está en segundo plano. Este modo es mejor que la API "Lo que sea" porque puede ejecutar el código por un time indefinido. Mejor aún, si la aplicación falla o el usuario reinicia el teléfono, la aplicación se inicia automáticamente en segundo plano. Si está interesado, puede seguir Consejos para desarrollar una aplicación de VoIP proporcionada por Apple. Su aplicación debe proporcionar al usuario algún tipo de funcionalidad de VoIP o Apple rechazará su aplicación.