我检查了许多文档,但在应用从后台删除或设备重启时找不到使用 NSURLSession 恢复任务的解决方案。
我正在处理亚马逊 S3 上传一些文件,因为我能够
- 当应用程序在前台和后台时,使用 NSURLSessionUploadTask 将文件上传到 S3。
- 当应用程序在上传时由于任何其他原因崩溃并且应用程序未从后台删除时恢复任务。
- 如果我在上传时重新启动设备并且应用程序未从后台删除,则重新启动任务。
这是我用 appdelegate 的 applicationDidBecomeActive 方法编写的实现恢复功能的代码。
// Initialize session config and the background session
NSURLSession *l_taskSession = [self backgroundSession];
[l_taskSession getTasksWithCompletionHandler:^(NSArray *dataTasks, NSArray *uploadTasks, NSArray *downloadTasks)
{
if([uploadTasks count])
{
for (int i=0; i<[uploadTasks count]; i++)
{
NSURLSessionUploadTask *uploadRequestTask = (NSURLSessionUploadTask*)[uploadTasks objectAtIndex:i];
[uploadRequestTask resume];
NSLog(@"-------- Upload Resumed ------- ");
}
}
else if(![uploadTasks count])
{
NSLog(@"------- There are no previous tasks -------");
}
}];
现在问题出在上面提到的两种情况(2和3)中
2015-06-12 17:12:32.902 AppName[162:60b] ------- 没有以前的任务 -------
所以我的问题是当应用程序从后台删除时是否可以恢复任务?或者任何人都可以给我参考链接,我可以找到相同的答案,任何帮助表示赞赏。