ios - with - Fortsetzen von Aufgaben mit NSURLSession, wenn die App aus dem Hintergrund oder beim Neustart des Geräts entfernt wurde



urlsessiondownloadtask (1)

Endlich komme ich zum Schluss,

Wenn eine iOS-App vom System beendet und erneut gestartet wird, kann die App denselben Bezeichner verwenden, um ein neues Konfigurationsobjekt und eine neue Sitzung zu erstellen und den Status der zum Zeitpunkt der Beendigung ausgeführten Übertragungen abzurufen. Dieses Verhalten gilt nur für die normale Beendigung der App durch das System.

Wenn der Benutzer die App vom Multitasking-Bildschirm aus beendet, bricht das System alle Hintergrundübertragungen der Sitzung ab.

Weitere Details finden Sie in der Apple Dokumentation zur NSURLSessionConfiguration Class Reference.

Ich habe viele Dokumente überprüft, konnte aber keine Lösung für die Wiederaufnahme von Aufgaben mit NSURLSession finden, wenn die App aus dem Hintergrund oder beim Neustart des Geräts entfernt wurde.

Ich habe mit Amazon S3 zu tun, um einige Dateien hochzuladen, in denen ich dazu in der Lage bin

  1. Laden Sie die Datei mit NSURLSessionUploadTask in S3 hoch, wenn sich die App sowohl im Vordergrund als auch im Hintergrund befindet.
  2. Aufgabe fortsetzen, wenn die App beim Hochladen aus einem anderen Grund abgestürzt ist und die App nicht aus dem Hintergrund entfernt wurde
  3. Aufgabe neu starten, wenn ich das Gerät während des Hochladens neu starte und die App nicht aus dem Hintergrund entfernt wird.

Hier ist mein Code zu achieve Lebenslauf Funktionalität geschrieben in applicationDidBecomeActive Methode von appdelegate.

// Initialize session config and the background session
NSURLSession *l_taskSession = [self backgroundSession];

[l_taskSession getTasksWithCompletionHandler:^(NSArray *dataTasks, NSArray *uploadTasks, NSArray *downloadTasks)
 {
     if([uploadTasks count])
     {
         for (int i=0; i<[uploadTasks count]; i++)
         {
             NSURLSessionUploadTask *uploadRequestTask = (NSURLSessionUploadTask*)[uploadTasks objectAtIndex:i];
             [uploadRequestTask  resume];
             NSLog(@"-------- Upload Resumed ------- ");
         }
     }
     else if(![uploadTasks count])
     {
         NSLog(@"------- There are no previous tasks -------");
     }
 }];

Nun ist das Problem in beiden Fällen (2 & 3) oben erwähnt, es gibt keine Liste der Aufgaben, die gerade ausgeführt wurden, wenn ich App aus dem Hintergrund entfernt und erneut gestartet, wie in Code fällt es sonst wenn Bedingung und Protokolle

2015-06-12 17: 12: 32.902 AppName [162: 60b] ------- Es gibt keine vorherigen Aufgaben -------

Also meine Frage ist das möglich, um Aufgaben fortzusetzen, wenn App aus dem Hintergrund entfernt? Oder kann mir jemand nur Referenzlinks geben, wo ich eine Antwort für das gleiche finden kann, jede Hilfe wird geschätzt.