如何使用NSURLSessionConfiguration - POST的backgroundSessionConfiguration

时间:2014-03-25 12:00:35

标签: ios post nsurlsession

我尝试使用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

在我搜索此错误后,我发现我们不应将NSURLSessionDataTaskPOST一起使用。我想知道如何为{{1}}实现后台上传。

3 个答案:

答案 0 :(得分:0)

试试这个。

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];

答案 1 :(得分:0)

如果要使用backgroundSessionConfiguration,则无法使用完成块调用。 Apple文档在这个和其他方面非常混乱。经过数小时的挫折,我成功实施了后台上传。由于互联网上没有太多信息,我决定记录我的工作。 https://medium.com/@KyleRStewart/zombie-uploads-with-ios-dd3b1f6b66 希望这可以节省你一些时间。

答案 2 :(得分:0)

@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;*

*