我有正在下载多个文件的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/