NSURLSessionDownloadTask
全部标签 我正在尝试在应用程序进入后台(例如从主页按钮按下)的情况下正确处理进程内NSURLSessionTasks。我目前正在采用将进程中的任务复制到后台队列的方法(请参见下面的代码)。然而,我发现后台任务表现不稳定,并不总是完成。任何人都可以发现我可能做错了什么/建议最好的方法吗?-(void)appWillResignActive:(NSNotification*)notification{UIApplication*app=[UIApplicationsharedApplication];//Registerexpiringbackgroundtask__blockUIBackgroun
我需要执行一个场景,步骤如下:使用用户提供的一些搜索参数进行网络调用然后,解析其JSON响应并创建模型实体然后,对于创建的每个实体,如果它有关联的图像URL,则调用相应的服务来下载此类图像,并在下载完成时将其显示在UICollectionView中。在下载我需要的N个图像时,我需要处理并发网络调用。用户应该可以取消当前的搜索流程并开始新的搜索流程。此外,我应该考虑到某个图像的单元格尚未显示或已出队。所以,我的问题是:哪种方法最好?直接使用URLSession和URLSessionDownloadTask执行第一次网络调用(非并发)和JSON响应解析,并使用Operation和Opera
在this的评论中answer我正在讨论backgroundTasks,最终导致:将backgroundTasks用于与下载/上传无关的任何事情。对于上传/下载,使用NSURLSessions的backgroundSessions。然后我发表了另一条评论,询问为什么不对所有类型的请求都使用后台session,并被告知:ForregularRESTcalls,backgroundsessionsaremuchlessconvenient,andgenerallynotwhatyou'dwant.They'renotageneralpurposetoolforeveryrequest;th
目前我正在努力从服务器下载一个文件,而且效果很好。我的问题是在实际下载开始之前我怎么知道url是否具有恢复能力?下面是一些代码片段,classDownloader:NSObject,URLSessionDownloadDelegate{/*SOMEPROPERTIES&DECLARATIONS*/overrideinit(){super.init()letbackgroundSessionConfiguration=URLSessionConfiguration.background(withIdentifier:url.absoluteString)backgroundSession
在我的应用程序中,用户可以随时取消下载。我通过调用[taskcancelByProducingResumeData:取消下载。它在大多数情况下工作正常,但是,如果下载任务在启动/恢复后立即取消,它会使nsnetwork守护程序崩溃。这是导致守护程序在iOS7.0上100%崩溃的示例代码。这个问题不会发生在iOS7.1上!NSURLSession*ses=[NSURLSessionsessionWithConfiguration:[NSURLSessionConfigurationbackgroundSessionConfiguration:@"aaa"]delegate:selfdel
更新适用于iOS9Beta5原始问题执行这行代码会导致EXC_BAD_ACCESS错误在调用完成处理程序之前在非主线程上的某些库代码中发生。[[[NSURLSessionsharedSession]downloadTaskWithURL:[NSURLURLWithString:@"https://www.google.com/images/srpr/logo11w.png"]completionHandler:^(NSURL*location,NSURLResponse*response,NSError*error){NSLog(@"AtDownloadCompletionHandle
我需要按顺序下载文件。目前我可以在应用程序处于前台时执行此操作。以下是我使用的逻辑。创建所有下载任务。一次恢复一个,当前完成后从URLSession:task:didCompleteWithError:恢复下一个。此逻辑在应用程序处于前台时有效,但一旦应用程序开始在后台运行(通过崩溃)并且我们在下载完成之前再次运行应用程序所有任务状态已更改为恢复并且所有任务都在同时下载.这是预期的行为还是我在后台模式下连续订购它所缺少的任何东西?编辑:我通过一个一个地创建下载任务来检查。完成第一个任务后,在setTaskDidCompleteBlock中创建下一个任务,依此类推。它只完成第一个任务,并
我想在用户取消下载或发生错误后继续下载。但是当我调用cancelByProducingResumeData方法时,resumeData为nil。所以,我无法恢复下载。我确定下载链接可以恢复,因为我们的PC客户端可以恢复下载这个链接。这是我的代码。这是thefullproject.#import"ViewController.h"@interfaceViewController(){NSURLSession*_session;}@property(weak,nonatomic)IBOutletUIProgressView*progressView;@propertyNSURLSessio
在我的应用程序中,用户可以一次下载多个文件。这些文件每个大约2MB。由于用户可以一次选择任意数量的文件,因此我将operationQueue设置为仅允许2个并发操作。以下是我设置session管理器的方式:NSURLSessionConfiguration*configuration=[NSURLSessionConfigurationdefaultSessionConfiguration];configuration.timeoutIntervalForRequest=60;AFURLSessionManager*manager=[[AFURLSessionManageralloc]
使用此代码下载图像。但是图像没有出现在显示器上。NSURL*url=[NSURLURLWithString:@"http://upload.wikimedia.org/wikipedia/commons/7/7f/Williams_River-27527.jpg"];NSURLSessionDownloadTask*downloadPhotoTask=[[NSURLSessionsharedSession]downloadTaskWithURL:urlcompletionHandler:^(NSURL*location,NSURLResponse*response,NSError*er