我正在使用NSURLSession
后台下载服务。
如果我的应用已暂停并且在后台,而NSURLSessionDownloadTask
有NSURLSessionDownloadDelegate
方法
- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didFinishDownloadingToURL:(NSURL *)location
按文档调用。
我观察到,每次调用委托方法时,[UIApplication sharedApplication].backgroundTimeRemaining
)从开始时的30
秒减少到一些下载后0
。如果它达到0
,则应用程序崩溃,并且“在超过允许的时间内有活动断言:”。
这意味着我必须处理完成后台下载(解压缩,移动)的总时间总共为30
秒。这可能适用于几个文件,但如果下载包含很多或大的zip文件则不行。
任何Apple文档中都未提及此时间间隔。这是NSURLSEssion
框架的限制还是我错误地实现了它?
感谢基督徒
答案 0 :(得分:2)
您可以使用 - [UIApplication beginBackgroundTaskWithExpirationHandler:]和 - [UIApplication endBackgroundTask:]让您的应用程序运行长时间运行的后台任务。这可能会让你的应用在终止之前有更多时间在后台。
另一种考虑的可能性是链接您的下载请求,以便在完成并调用您的URLSession委托时,您处理该文件并发出下一个下载请求。这样,您一次只能处理多个文件(假设处理单个文件的时间不会太长)。