我有正在下载多个文件的NSURLSession。我正在为ios 8更新一个ios 7应用程序。它在ios 7中可以正常工作,但是在与ios 8兼容时可以使用

URLSessionDidFinishEventsForBackgroundURLSession:

从来没有被调用。

我挖得更深一些,在
-(void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didFinishDownloadingToURL:(NSURL *)location


-(void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error

我正在检查 session 中是否有剩余的下载任务:
[self.session getTasksWithCompletionHandler:^(NSArray *dataTasks, NSArray *uploadTasks, NSArray *downloadTasks){ ...}

在最后一个被称为Meathod的代表上,downloadTasks数组中总是剩余一个元素。奇怪的是,此下载任务并不总是引用相同的文件,并且该任务的状态表明下载已完成。

同样,在ios7中工作正常。仅在ios 8中出现问题。

最佳答案

我假设您正在iOS模拟器上进行测试。如果是,则另一个错误是造成此错误行为的原因。 iOS8 Simulator从未真正使应用程序后台运行,因此完成处理程序将不会触发。

尝试在设备上运行,它将起作用。

您可以在Apple forums或此blog post上找到完整的讨论

关于ios8 - NSURLSession URLSessionDidFinishEventsForBackgroundURLSession处理程序从未调用过ios8。在ios 7中可以,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25872719/

10-15 17:11