Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/112.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/94.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios NSURLSession问题,后台有多个下载,有多个会话和多个段_Ios_Nsurlsession_Multipart_Nsurlsessiondownloadtask - Fatal编程技术网

Ios NSURLSession问题,后台有多个下载,有多个会话和多个段

Ios NSURLSession问题,后台有多个下载,有多个会话和多个段,ios,nsurlsession,multipart,nsurlsessiondownloadtask,Ios,Nsurlsession,Multipart,Nsurlsessiondownloadtask,我们用下面的配置代码包装了会话。我为我装箱的每个任务调用此方法 +(NSURLSession ) getNewSessionWithID:(NSString )sessionID delegateObject:(id)sender { NSURLSession *session; NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration backgroundSessionConfiguration

我们用下面的配置代码包装了会话。我为我装箱的每个任务调用此方法

+(NSURLSession ) getNewSessionWithID:(NSString )sessionID delegateObject:(id)sender 
{
    NSURLSession *session;
    NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:sessionID];
    NSOperationQueue *queue=[[NSOperationQueue alloc]init];
    queue.maxConcurrentOperationCount=10;
    queue.name=sessionID;

    session = [NSURLSession sessionWithConfiguration:configuration delegate:sender delegateQueue:queue];

    NSLog(@"Session ID :%@",session);
    NSLog(@"QUEUE : %@",queue);
   return session;
}
即使为多个任务创建了多个会话,但只有一个会话处于活动状态,并且只有一个任务正在执行,对于该任务,只有三个部分正在为该会话下载

调用此方法以创建并启动下载任务

-(void)DLRequestAllRenge:(NSMutableArray*)arrayrange andFileinfo:(FileInfo *)fileInfoObj
{
    NSMutableArray *arrayAllParts=[[NSMutableArray alloc]init];
    fileInfoObj.tempPath=[fileInfoObj UniqueFileName:[NSTemporaryDirectory() stringByAppendingString:[fileInfoObj.Name stringByDeletingPathExtension]]];
    [self createTempDirectory:fileInfoObj.tempPath];
    NSLog(@"REQ Session:%@",fileInfoObj.session);
    for (int i=0; i<arrayrange.count; i++)
    {
        NSString *rangString = [arrayrange objectAtIndex:i];
        NSMutableURLRequest *request=[[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:fileInfoObj.URL]];
        [request setValue:rangString forHTTPHeaderField:@"Range"];

        NSString *fileName=[NSString stringWithFormat:@"%@(%d).data",[fileInfoObj.Name stringByDeletingPathExtension],i];
        NSString *filePath=[fileInfoObj.tempPath stringByAppendingPathComponent:fileName];
        FileInfo *subFileInfo=[[FileInfo alloc]init];
        subFileInfo.URL=fileInfoObj.URL;
        subFileInfo.Name=fileName;
        subFileInfo.Path=filePath;
        subFileInfo.Folder=[fileInfoObj getCurrentFolderName:filePath];
        subFileInfo.Range=rangString;
        subFileInfo.isDownloaded=NO;
        subFileInfo.NSUrlSessionID=fileInfoObj.NSUrlSessionID;
        subFileInfo.Progress=@"0";
        subFileInfo.Priority=[NSString stringWithFormat:@"%d",i];
        subFileInfo.fileDetail=@"Connecting...";
        subFileInfo.fileStatus=RequestStatusDownloading;
        subFileInfo.request=request;
        subFileInfo.startTime=[NSDate date];
        NSURLSessionDownloadTask *downloadTask = [fileInfoObj.session downloadTaskWithRequest:request];
        downloadTask.taskDescription=filePath;
        [downloadTask resume];
        subFileInfo.DownloadTask=downloadTask;
        [arrayAllParts addObject:subFileInfo];

    }
    fileInfoObj.parts=arrayAllParts;

    [downloadingArray addObject:fileInfoObj];

    [bgDownloadTableView reloadData];

}
-(void)DLRequestAllRenge:(NSMutableArray*)arrayrange和FileInfo:(FileInfo*)fileInfoObj
{
NSMUTABLEARRY*arrayAllParts=[[NSMUTABLEARRY alloc]init];
fileInfoObj.tempPath=[fileInfoObj UniqueFileName:[NSTemporaryDirectory()stringByAppendingString:[fileInfoObj.Name stringByDeletingPathExtension]];
[self-createTempDirectory:fileInfoObj.tempPath];
NSLog(@“请求会话:%@”,fileInfoObj.Session);
对于(int i=0;i