Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.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 如何使用NSURLSessionConfiguration-POST的backgroundSessionConfiguration_Ios_Post_Nsurlsession - Fatal编程技术网

Ios 如何使用NSURLSessionConfiguration-POST的backgroundSessionConfiguration

Ios 如何使用NSURLSessionConfiguration-POST的backgroundSessionConfiguration,ios,post,nsurlsession,Ios,Post,Nsurlsession,我正在尝试使用NSURLSession将图像上载到服务器,方法是使用POST。每次我可能会有10多张大尺寸的图片。我想做的是,在backgroundSessionConfiguration中执行POST,这样即使用户关闭应用程序,后台上传也不应该停止,并且在完成后显示通知。当我使用backgroundSessionConfiguration从服务器下载NSURLSessionDownloadTask时,每件事都非常完美。但是,当我尝试将它用于POST和NSURLSessionDataTask时,

我正在尝试使用
NSURLSession
将图像上载到服务器,方法是使用
POST
。每次我可能会有10多张大尺寸的图片。我想做的是,在
backgroundSessionConfiguration
中执行
POST
,这样即使用户关闭应用程序,后台上传也不应该停止,并且在完成后显示通知。当我使用
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
的后台上传

试试这个

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

如果要使用backgroundSessionConfiguration,则不能使用完成块调用。苹果文档在这一点和其他点上非常混乱。在经历了数小时的挫折之后,我成功地实现了后台上传。由于互联网上的信息不多,我决定把我的工作记录下来。
希望这能为您节省一些时间。

@johny。若我们希望在后台支持上载任务,则您提出的解决方案不起作用。支持后台上传的正确方法是使用苹果提供的以下方法

*


*

后台会话配置不支持NSURLSessionDataTask。只允许在后台下载和上载任务。您可以使用NSURLSessionUploadTask。我们可以使用NSURLSessionUploadTask添加post数据吗。像标题、描述等,还有图片。我从未尝试过,但你可以添加[urlRequestSetHttpMethod:@“POST”];在您的url请求中。我试图添加帖子,但收到此错误“后台会话中的上载任务必须来自文件”后台会话中不允许完成处理程序
/* 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;*