1

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

如果我的应用程序已暂停并处于后台并且NSURLSessionDownloadTask已完成该NSURLSessionDownloadDelegate方法

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

被称为记录。

我观察到,每次调用委托方法时,从开始时的秒数到下载后的秒数都会[UIApplication sharedApplication].backgroundTimeRemaining减少。如果它到达应用程序崩溃,并显示“超过允许的时间有活动断言:”。3000

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

这个时间间隔在任何 Apple 文档中都没有提到。这是NSURLSEssion框架的限制还是我实施错误?

谢谢克里斯蒂安

4

1 回答 1

2

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

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

于 2013-11-14T21:17:02.007 回答