purgeIdleCellConnections: Download über 3G-Netzwerk

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

Macoun 2019 - Frühbucherrabatt bis 26.7.2019

  • purgeIdleCellConnections: Download über 3G-Netzwerk

    Hallo,

    ich habe seit Kurzem ein Problem mit dem Downloaden von Dateien über das 3G-Netzwerk auf dem iPhone.
    Ich habe iOS 6 installiert und arbeite mit Xcode Version 4.5.

    Zu meinem Problem:

    Beim Start meiner App wird überprüft, ob eine Verbindung zum Internet besteht und wenn ja, dann werden ein paar Dateien gedownloadet. Das Ganze mache ich, indem ich die Methode download mit [self performSelectorInBackground: @selector(download) withObject:nil]; aufrufe. Damit stelle ich sicher, dass der Activity Indicator sich dreht.
    Jedenfalls funktioniert das ganze über WLAN auch problemlos, sobald das iPhone aber nur über 3G verbunden ist, tut die App zwar so als könnte sie die Datei downloaden, allerdings ist es in Wirklichkeit nur eine veraltete Version der Datei, die vorher über WLAN gedownloadet wurde.
    Nach kurzer Zeit erscheint dann in der Konsole Folgendes:

    purgeIdleCellConnections: found one to purge conn = 0x1fda8da0

    Die App hängt sich dabei nicht auf, sondern läuft weiter, nur eben so, dass an keiner Stelle in der App irgendwelche Dateien gedownloadet werden können. Seltsamerweise werden aber UIWebView-Inhalte trotzdem angezeigt.

    Hier mein Code ein wenig vereinfacht:

    In viewDidAppear:

    Quellcode

    1. [self performSelectorInBackground:@selector(download) withObject:nil];


    In download:

    Quellcode

    1. // Versionsnummer downloaden
    2. NSString *version = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"http://www.internetadresse.de/App/Versionsnummer.txt"] encoding:NSUTF8StringEncoding error:nil];


    Ich hoffe ihr könnt mir helfen. Im Apple-Developer-Forum bzw. mit Google findet man zwar etwas zum Thema, allerdings keine Lösung des Problems.

    Danke im Voraus und viele Grüße
    feop
  • Mac & i Test Abo
  • Danke für deine Antwort.

    Das habe ich vergessen zu erwähnen. Ich habe NSError schon überprüft und die Ausgabe war null, also kein Fehler.

    Ich habe es nun geschafft, dass die Datei gedownloadet wird und zwar mit NSURLConnection. Den Hinweis purgeIdleCellConnections: found one to purge conn bekomme ich aber weiterhin.

    Grüße
    feop
  • Selbe Problem, habe ein Idea

    Ich kann etwas Deutsch sprechen, lieder schreiben ist schwerer als sprechen :(

    Ich habe in diesen moment die selbe problem. Ich benutze NSOperationQueue, und in iOS5 habe keine maxConcurrentOperationCount gesetzt. In die letzten moment habe ich gefunden, wann ich diese Nummer zum 4 setzen, mein App had kein mehr problem.


    Ich will kurtzlich ein Thread am privat iOS Apple list offnen, und auch eine am StackOverflow (auf English).

    Mein App hat kein problem in iOS5. Jetzt, mit iOS6 / iPhone 4 / AT&T 3G (im NYC, netz ist schrecklich).

    Ich glaube diese Problem ist mit iOS6 neu.

    David H
  • Hallo,

    Jedenfalls funktioniert das ganze über WLAN auch problemlos, sobald das iPhone aber nur über 3G verbunden ist, tut die App zwar so als könnte sie die Datei downloaden, allerdings ist es in Wirklichkeit nur eine veraltete Version der Datei, die vorher über WLAN gedownloadet wurde.


    … aus der Erinnerung heraus:

    -stringWithContentsOfURL: nutzt intern NS…Request und cached die Daten.

    Baue Dir Deinen eigenen Request und verwende NSURLRequestReloadIgnoringLocalAndRemoteCacheData:

    developer.apple.com/library/ma…f/NSURLRequestCachePolicy

    Viele Grüße
  • Hallo,

    entschuldigt bitte, dass ich mich erst so spät melde.

    Mir ist aufgefallen, wenn ich statt "Versionsnummer.txt" "Version.txt" auf dem Server verwende, funktioniert es, allerdings nur für ca. 3 Tage, dann "merkt" er sich wieder den Inhalt der alten Datei und aktualisiert nie.

    @scriptedSheep: Die Connection ist
    asynchron und die Datei ist sehr klein (Textdatei mit 2 Zeichen). Ich überprüfe, ob connection:didFailWithError: aufgerufen wird, aber das ist nicht der Fall, also wird kein Timeout erreicht.

    @Thallius: Ich nutze den gedownloadeten NSString lediglich zur Überprüfung, er wird also nirgends abgespeichert etc.
    Ich glaube schon, dass es von der Connection kommt, da ich für jede Connection einen purgeIdleCellConnection-Hinweis bekomme.

    @David H: Ich habe deinen Post im Apple Developer Forum gelesen. Du sprichst aber von ca. 100 Bildern, die Du downloadest. Bei mir sind es nur ca. 4 Dateien (oder sogar nur eine), deshalb glaube ich nicht, dass es daran liegt.

    @little_pixel: Ich bin umgestiegen auf NSURLConnection und benutze kein stringWithContentsOfURL: mehr. Aber Du hast absolut Recht mit NSURLRequestIgnoringLocalAndRemoteCacheData, ich glaube das war der Fehler

    Das Problem war anscheinend, dass er wirklich den Inhalt einer veralteten Datei-Version gecached hat und über 3G immer auf den Cache zugegriffen hat, um Datenvolumen zu sparen. Jetzt verwende ich NSURLRequestReloadIgnoringLocalAndRemoteCacheData und hoffe, dass er nun immer die neue Datei erkennt.

    Vielen Dank für eure Hilfe

    Viele Grüße
    feop