2017-05-19 4 views
3

ich dieses Stück Code verwenden MP3-Dateien in das Dokumentenverzeichnis zum Download:Alamofire: cache große Dateien auf die Dokumente heruntergeladenen Ordner

let destination = DownloadRequest.suggestedDownloadDestination(for: .documentDirectory) 
Alamofire.download(theUrl!, to:destination).response { response in 
    // stuff 
}.downloadProgress { progress in 
    // Stuff 
} 

Die Datei herunterlädt, in Ordnung, aber wenn ich die App schließen und starten Sie es erneut , startet der Download neu von 0. Ich möchte, dass die Datei zwischengespeichert und sofort abgerufen wird. Mein Verständnis von Alamofire ist, dass die Datei in einen temporären Ordner heruntergeladen und dann in den Ordner Dokumente verschoben wird, ist das der Grund, warum der Cache nicht passiert?

Vielen Dank

Antwort

7

Überprüfen Sie bitte die folgenden Hinweise, um:
1. https://github.com/Alamofire/Alamofire/issues/1104
2. https://github.com/Alamofire/Alamofire#resuming-a-download
3. https://stackoverflow.com/a/39347461/3549695

Zusammengefasst:
Sie müssen den Antrag verwenden. cancel() API, um die resumeData vor dem Beenden der App zu generieren.
Dann verwenden Sie die Lebenslauf-API mit dem resumeData, um die Anfrage beim Neustart der App fortzusetzen.
Es gibt keine Garantie, dass es immer funktioniert. Wenn es fehlschlägt, wird es immer noch von 0 neu gestartet.

Es gab eine Erwähnung des Problems mit iOS 10 in der Referenz (2) oben, die verhindern, dass dies ordnungsgemäß funktioniert. Aber das Update auf StackOverflow (Ref. 3) hat einen Bericht, dass es in iOS 10.2

behoben wurde
Verwandte Themen