Ich habe ein Problem, das ist unglaublich schwer zu debuggen. Wenn meine App WiFi verwendet und sie ungefähr 30 Minuten im Leerlauf ist, reagiert die NSURLConnection
manchmal nicht mehr, wenn ich sie aufwecke. Anfragen werden gesendet, kehren aber nie zurück.iPhone App verliert Internet-Verbindung (NSURLConnection nicht zurück)
Zuerst dachte ich, dies sei ein Speicherfehler, da die Instanzen zu früh freigegeben wurden und daher nie eine Antwort zurückgaben. Allerdings, wenn ich die App in den Hintergrund, gehen Sie in Einstellungen, WLAN ausschalten, so dass 3G ausschließlich verwendet wird, und zur App zurückkehren, kommt die Internetverbindung magisch wieder zum Leben und alle ausstehenden NSURLConnection
s zurück und fertig.
Offensichtlich ist dies ein Problem für Menschen mit WiFi. Ist das wirklich ein WLAN-Problem, oder fehlt mir etwas? Wenn Sie zu einer anderen App wie Safari gehen, das WLAN-Radio verwenden und zu meiner App zurückkehren, wird das Problem nicht gelöst - Verbindungen werden immer noch nicht wiederhergestellt. Ich habe das mit Xcode verfolgt und mir gehen die Ideen aus.
Auch die Info.plist-Markierung "Application uses WiFi" ist auf ON gesetzt und dies ist Firmware 5.1. ist "Anwendung nutzt WiFi" die gleiche wie UIRequiresPersistentWiFi?
Update: Das hat nichts mit der Wifi-Flagge zu tun - es kann innerhalb von 5 Minuten sterben. Bis jetzt konnte ich es nur auf meinem iPhone 4s mit 5.1 Firmware duplizieren. Es ist nicht wirklich eine Lösung, aber ich lösche das Telefon, um es mit einer neuen Installation zu versuchen, um zu sehen, ob das irgendwelche Auswirkungen hat. Ich habe überprüft, dass NSURLConnection
immer am Haupt-Thread aufgerufen wird, und Haltepunkte bei connection:failedWithError:
und connection:didReceiveResponse:
festlegen. Wenn die Verbindung abbricht, kehrt keiner zurück, bis ich das WiFi deaktiviere und wieder aktiviere und dann alle sofort zurückkehre. Dies geschieht auch auf einem lokalen Server, und der Server kehrt immer noch zurück, wenn ich ihn mit einem Webbrowser anpinge.
Haben Sie versucht, die 'UIRequiresPersistentWiFi' Flag gesetzt? – esqew
Ich denke schon - "Anwendung nutzt WiFi" ist in der pList-Datei aktiviert. –
Blockieren Sie versehentlich den Haupt-Thread? Haben Sie synchrone NSURLConnections in einem Hintergrundthread verwendet? – magma