我用NSURLSession, 和NSURLSessionDownloadTask来下载 o 文件。在下载期间,我杀死了应用程序(通过点击主页按钮,然后刷掉应用程序)。正如我所料,我在以下函数中收到错误“取消”:
@property (nonatomic, strong) NSURLSessionDownloadTask *downloadTask;
- (void)URLSession:(NSURLSession *)session 任务:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error {
……
self.downloadTask = nil;
...
}
错误的用户信息包含恢复数据,以便稍后我们可以继续下载。但是,我不希望那样。我想要的是当我重新打开应用程序时,它会再次开始下载,但不会继续下载。
我分配了self.downloadTask = nil,但它不能解决问题。
我用来开始下载的以下功能:
-(无效)下载:(NSURLRequest *)请求{
if (self.downloadTask != nil) 返回;
self.session = [self sharedBackgroundSession];
self.downloadTask = [self.session downloadTaskWithRequest:request];
[self.downloadTask 恢复];
}
- (NSURLSession *)sharedBackgroundSession {
静态 NSURLSession *session = nil;
静态 dispatch_once_t 一次令牌;
dispatch_once(&onceToken, ^{
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:@"abs.com.DownloadApp"];
session = [NSURLSession sessionWithConfiguration:configuration delegate:self delegateQueue:nil];
});
返回会话;
}
注意:我使用的是 XCode6,Objective-C