我试图使用NSURLSession将图片上传到使用POST的服务器。每次我可能有超过10个大尺寸的图片。我想要做的是,在POST中使用backgroundSessionConfiguration,这样即使用户关闭了应用程序背景,上传也不应该停止,并且在完成后显示一个通知。当我使用backgroundSessionConfiguration从服务器下载NSURLSessionDownloadTask时,每件事都是完美的。但是,当我尝试将它用于POST和NSURLSessionDataTask时,就会出现以下错误
*** Terminating app due to uncaught exception 'NSGenericException', reason: 'Data tasks are not supported in background sessions.'
*** First throw call stack:在搜索了这个错误之后,我发现我们不应该将backgroundSessionConfiguration与NSURLSessionDataTask一起使用。我想知道如何实现背景上传为POST。
发布于 2014-03-25 12:57:06
尝尝这个。
NSURL *URL = [NSURL URLWithString:@"urlString"];
NSURLRequest *request = [NSURLRequest requestWithURL:URL];
NSData *data = [NSData dataWithContentsOfFile:fileURL];
NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionUploadTask *uploadTask = [session uploadTaskWithRequest:request fromData:data
completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {}];
[uploadTask resume];发布于 2014-06-11 02:57:52
如果要使用backgroundSessionConfiguration,则不能使用完成块调用。苹果的文档在这一点和其他方面都很混乱。在经历了许多小时的挫折之后,我成功地实现了背景上传。由于互联网上没有太多的信息,所以我决定把我的工作记录下来。https://medium.com/@KyleRStewart/zombie-uploads-with-ios-dd3b1f6b66希望这能为您节省一些时间。
发布于 2015-06-28 06:53:20
@johny.如果我们想在后台支持上传任务,那么您提出的解决方案不起作用。支持后台上传的正确方法是使用Apple提供的以下方法
*
/* Creates an upload task with the given request. The body of the request will be created from the file referenced by fileURL */
*- (NSURLSessionUploadTask *)uploadTaskWithRequest:(NSURLRequest *)request fromFile:(NSURL *)fileURL;**
https://stackoverflow.com/questions/22633973
复制相似问题