NSURLSession重新完成下载委托中的后台时间

时间:2013-11-14 09:51:28

标签: objective-c cocoa-touch ios7 nsurlsession

我正在使用NSURLSession后台下载服务。

如果我的应用已暂停并且在后台,而NSURLSessionDownloadTaskNSURLSessionDownloadDelegate方法

- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didFinishDownloadingToURL:(NSURL *)location 

按文档调用。

我观察到,每次调用委托方法时,[UIApplication sharedApplication].backgroundTimeRemaining)从开始时的30秒减少到一些下载后0。如果它达到0,则应用程序崩溃,并且“在超过允许的时间内有活动断言:”。

这意味着我必须处理完成后台下载(解压缩,移动)的总时间总共为30秒。这可能适用于几个文件,但如果下载包含很多或大的zip文件则不行。

任何Apple文档中都未提及此时间间隔。这是NSURLSEssion框架的限制还是我错误地实现了它?

感谢基督徒

1 个答案:

答案 0 :(得分:2)

您可以使用 - [UIApplication beginBackgroundTaskWithExpirationHandler:]和 - [UIApplication endBackgroundTask:]让您的应用程序运行长时间运行的后台任务。这可能会让你的应用在终止之前有更多时间在后台。

另一种考虑的可能性是链接您的下载请求,以便在完成并调用您的URLSession委托时,您处理该文件并发出下一个下载请求。这样,您一次只能处理多个文件(假设处理单个文件的时间不会太长)。