iOS: Socket error Vorgang konnte nicht abgeschlossen werden Broken pipe
Sende ich einige Daten(Bild-bytes) aus dem iOS-app-socket-server (java-desktop) in jedem paar Intervalle.
Ihre Daten senden, richtig. Ich sehe ein seltsames Problem, wenn das iOS-Gerät Bildschirm geht aus, während das senden der Daten von iOS-app, und dann, wenn ich auf dem Bildschirm des Geräts, dann bekomme ich die folgende Fehlermeldung und die app hat getrennt, mit sockel oder manchmal stürzt das app:
Error writing to stream <__NSCFOutputStream: 0x1f5dd120>: Error Domain=NSPOSIXErrorDomain Code=32 "The operation couldn’t be completed. Broken pipe"
Stream space : 0
NSStreamEventErrorOccurred - Can not connect to the host
Wenn das Gerät Bildschirm Ausgeschaltet, Meine iOS-app Stoppt das senden von Daten an der Buchse. und dann drehen Sie AUF dem Bildschirm zurück, wird die socket-Verbindung unterbrochen wird /broken pipe-Fehler. Wie es zu lösen?
Ich suchte aber nicht finden konnte, die Lösung noch. Könnte jemand bitte raten, was könnte der Grund sein für dieses Problem und wie löst man das?
- Apple entwickelt ios-auf diese Weise verringern Sie den Akkuverbrauch. Sie brauchen eine gute (sprich: Mehrwert) Grund, um zugelassen zu werden, laufen im bg. Was ist der Mehrwert/Ihr nutzen Fall?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie 2 Möglichkeiten.
1. Deaktivieren der idle-timer: Dieser code verhindert, dass Ihr iPhone vor dem schlafen gehen, während Ihre app ausgeführt wird. Ich bin mir nicht sicher, ob dies verhindert, dass das Gerät zu sperren, aber Sie können verhindern, dass das Dimmen des Bildschirms, mit der UIApplication ist idleTimerDisabled Eigenschaft.
Aus der Dokumentation:
2. Eine app mit hintergrund-Unterstützung: können Sie diesem Tutorium Folgen auf Hintergrund-Modi in iOS.
Hier eine kurze übersicht über die fünf grundlegenden hintergrund-Modi verfügbar in iOS:
Ihre app muss den VoIP-Dienst auch.
VOIP-hintergrund-Modus-ermöglicht es Ihrer app, um beliebigen code auszuführen, während in der hintergrund. Dieser Modus ist besser als die "Was auch immer" - API, weil Sie den code ausführen können für eine unbestimmte Menge an Zeit. Besser noch, wenn die app abstürzt oder der Benutzer neu gestartet das Telefon, wird die app automatisch gestartet wird, im hintergrund. Wenn Sie interessiert sind, können Sie Tipps für die Entwicklung einer VoIP-App von apple. Ihre app muss den Benutzer mit einer Art von VoIP-Funktionalität oder Apple lehnt app.
Können Sie prüfen, deaktivieren Sie den idleTimer, bis die Netzwerk-Aktivität abgeschlossen ist
https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIApplication_Class/Reference/Reference.html#//apple_ref/occ/instp/UIApplication/idleTimerDisabled
Ihrem server möglicherweise haben aufgehört zu arbeiten oder im stop-Zustand. Starten Sie Ihren server neu und führen Sie die Anwendung.