2017-05-19 39 views
3

我使用这段代码将MP3文件下载到的文件目录:Alamofire:下载到文件高速缓存的大型文件的文件夹

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

文件下载罚款,但如果我关闭应用程序并重新启动,下载从0重新开始。我想要的是文件被立即缓存和提取。 我对Alamofire的理解是,该文件被下载到一个临时文件夹,然后移动到Documents文件夹,这是什么导致缓存不发生?

非常感谢

回答

7

请检查以下引用依次是:
1. https://github.com/Alamofire/Alamofire/issues/1104
2. https://github.com/Alamofire/Alamofire#resuming-a-download
3. https://stackoverflow.com/a/39347461/3549695

总结:
您需要使用的要求。 cancel()API在应用程序退出前生成resumeData。
然后,在应用程序重新启动时,使用resumeData恢复API来恢复请求。
不能保证它始终有效。如果失败,它仍然会从0开始重新启动。

上面参考文献(2)中提到了iOS 10的一个问题,它阻止了它的正常工作。 但StackOverflow上的更新(参考文献3)有一个报告,它已在iOS 10.2中修复了