我尝试使用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
一起使用。我想知道如何为{{1}}实现后台上传。
答案 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;*
*