【问题标题】:How to download multiple files by NSURLSessionDownloadTask如何通过 NSURLSessionDownloadTask 下载多个文件
【发布时间】:2015-06-22 10:11:06
【问题描述】:

iOS 8、XCode 6.3.2

我想连续下载多个文件。 在Push notification 之后,APP 将由NSURLSessionDownloadTask 启动BackgroudDownload。 First BackgroudDownload进程完成后,APP要启动Second进程,但是Second 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. 首先制作一组要下载的 zip 文件。 2. 初始化会话对象 3. 编写一个获取URL并开始下载的方法
  • 这里有一个例子请检查它github.com/chasseurmic/TWRDownloadManager

标签: ios objective-c push-notification nsurlsessiondownloadtask


【解决方案1】:

下载任务分为以下几部分。

  1. 首先制作一组要下载的 zip 文件。
  2. 初始化会话对象
  3. 写一个可以获取URL和“startDownloading”的方法
  4. 在调用解压缩该文件的委托方法(成功下载)中。删除 zip 数组的第一个对象并再次调用“startDownloading”方法及其调用,直到您的数组计数大于零

我希望你能理解我在这里要解释的内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-31
    相关资源
    最近更新 更多