如何通过NSURLSessionDownloadTask下载多个文件

时间:2015-06-22 10:11:07

标签: ios objective-c push-notification nsurlsessiondownloadtask

iOS 8,XCode 6.3.2

我想连续下载多个文件。 在Push notification之后, APP 将从BackgroudDownload开始NSURLSessionDownloadTask。 第一个BackgroudDownload过程完成后,APP想要启动第二个过程,但第二个BackgroudDownload过程没有启动。

代码低于

//推送通知

调用此方法
- (void)startBackgroundDownload
{
    // Session
    NSURLSessionConfiguration *configFirst = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:@"com.test.first"];
    sessionFirst = [NSURLSession sessionWithConfiguration:configFirst delegate:self delegateQueue:nil];

    NSURLSessionConfiguration *configSecond = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:@"com.test.second"];
    sessionSecond = [NSURLSession sessionWithConfiguration:configSecond delegate:self delegateQueue:nil];

    // Start First Download
    NSURLRequest *requestFirst = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://xxxxx/first.zip"]];
    NSURLSessionDownloadTask *downloadTaskFirst = [sessionFirst downloadTaskWithRequest:requestFirst];
    [downloadTaskFirst resume];
}

//完成下载

- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didFinishDownloadingToURL:(NSURL *)location
{
    if (session == sessionFirst) {
        NSURLRequest *requestSecond = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://xxxxx/second.zip"
        NSURLSessionDownloadTask *downloadTaskSecond = [sessionSecond downloadTaskWithRequest:requestSecond];
        [downloadTaskSecond resume];
    } else if (session == sessionSecond) {
        NSLog(@"all finish");
    }
}

第一个是成功的,第二个是失败的(不是开始)。 我想要建议去追求事业。 感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:0)

下载任务完全如下所示。

  1. 首先制作一个要下载的zip文件数组。
  2. 初始化会话对象
  3. 编写一个可以获取URL和" startDownloading"
  4. 的方法
  5. 在称为解压缩该文件的委托方法(成功下载)中。删除zip数组的第一个对象,然后再次调用" startDownloading"方法及其调用,直到您的数组计数大于零
  6. 我希望你能理解我想在这里解释的内容。