ios - NSURLSession didFinishDownloadingToURL 找不到临时下载的文件

标签 ios objective-c download nsurlsession

我在 NSURLSession 的委托(delegate)方法 didFinishDownloadingToURL 上遇到了一个奇怪的问题。

我要做的第一件事是检查临时下载的文件是否存在:

- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask
                                            didFinishDownloadingToURL:(NSURL *)location
{
    if (![[NSFileManager defaultManager] fileExistsAtPath: [location path]])
    {
        NSLog(@"Error. File not found");
        return; // is giving error when the app is wake up by the system
    }
    ...
}

当应用程序在前台并下载完成时,它可以正常工作。但是当应用程序处于后台并被操作系统强行杀死时,它返回false。

有人知道会发生什么吗?我知道当应用程序被操作系统唤醒时,这个委托(delegate)方法的执行是有时间限制的,临时文件不存在是没有意义的。我什至无法将其复制到其他位置... 因为文件的大小有意义吗?我正在下载 +-130MB 的文件。

谢谢。

最佳答案

我通过卸载应用程序后安装应用程序解决了同样的问题。似乎 NSURLSession 在网络 session 工作时发生强制关闭时会在系统上留下碎片。

关于ios - NSURLSession didFinishDownloadingToURL 找不到临时下载的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28860112/

相关文章:

ios - 为什么使 UIApplicationDelegate 中的 window 属性为可选而不是隐式解包可选?

iphone - 从一个 View Controller 调用另一个 View Controller 的方法

objective-c - 如何在用户停止触摸屏幕的地方停止 uiscrollview 滚动

ios - 如何将 Firebase 中的用户个人列表抓取到表格 View

android - iOS 等同于 Android 服务?

objective-c - ObjC 访问 C 函数中的属性

objective-c - 如何命名可能产生错误的选择器?

java - Android 中的可恢复文件下载/上传

ios - 如何使用 Alamofire 4 以字节为单位获取下载进度?

scala - FIRRTL 存储库下载失败