2017-01-11 8 views
1

Ich erlebe ein seltsames Verhalten beim Debuggen meiner App.Was verursacht merkwürdige Unterschiede zur URLSession im Hintergrund zwischen ios 8.1 und ios 10.2 im Simulator?

Ich habe eine gerade nach vorne URLSession mit Hintergrundkonfiguration:

 let backgroundSessionConfiguration = URLSessionConfiguration.background(withIdentifier: (prefix + postfix)) 
     let backgroundSession = Foundation.URLSession(configuration: backgroundSessionConfiguration, delegate: self, delegateQueue: OperationQueue.main) 

     progressView.setProgress(0.0, animated: false) 

     var request = URLRequest(url: dlUrl) 
     request.httpMethod = "GET" 
     request.cachePolicy = NSMutableURLRequest.CachePolicy.reloadIgnoringCacheData 

     let task = backgroundSession.downloadTask(with: request) 

     task.resume() 

Mein Test ist wie folgt:

  1. start herunterladen in App.
  2. bringen app zum hintergrund.
  3. Benachrichtigen, wenn der Hintergrund-Download abgeschlossen ist.
  4. Nach Klick auf Benachrichtigung App kommt

Als ich das den Download nach dem Schritt pausiert 10.2 die App unter ios mit einem Simulator versuchen in den Vordergrund 2, und der Download nicht beendet - es gibt keine weiteren Fehler Nachrichten oder Warnungen angezeigt werden. Wenn ich die App in den Vordergrund bringe, wird der Download fortgesetzt und beendet.

Aber wenn ich das gleiche mit dem Simulator und ios 8.1 versuche alles funktioniert wie erwartet.

Und nun das Beste:

Auf das Gerät mit ios 10.2 alles auch wie erwartet funktioniert, so dass nun die Frage, warum nicht auf dem Simulator? Könnte das an einigen Ressourcenbeschränkungen im Simulator liegen?

Antwort

1

Es klingt wie Sie einen Fehler mit dem 10.2-Simulator gefunden. Es ist nicht überraschend. Der Simulator ist eigentlich auf OS X-Frameworks geschrieben, mit Klebecode, um es wie iOS zu handeln.

Ich habe festgestellt, dass Probleme in den Teilen des Simulators auftreten, die mit OSX oder mit der benutzerdefinierten Hardware auf iOS-Geräten interagieren.

Es gibt verschiedene Inkonsistenzen im Dateisystem, und Dinge wie GPS und das Acellometer werden nicht vollständig unterstützt.

Es ist nicht so überraschend, dass der Simulator NSURLSession Handling nicht ganz richtig behandelt. Um den Download von Dateien von außerhalb Ihrer App zu verwalten und Ihre App nach Abschluss neu zu starten, müssen Sie mit der Aufgabenplanung auf niedriger Ebene interagieren.

Ich würde vorschlagen, eine Radar-Bug mit Apple einreichen.

+0

Danke Duncan C für die Erklärung. Ich wäre neugierig, wenn jemand das gleiche Problem erfährt ... –