我正在开发应用程序,允许用户拍摄最初保存在设备中的图像和视频。只要设备连接到网络(移动数据或无线网络),就需要将这些设备上载到服务器。使用NSURLSession进行网络连接与背景上传
现在如果我使用NSURLSessionUploadTask
,数据也会在后台上传,但是如果没有网络,我会在-didCompleteWithError:
委托处收到回调,现在任务结束。现在,如何在设备连接网络时恢复任务。
我想做一些检查可达性和设备是否可访问开始上传任务。
我能想到的一种方法是使用Background Fetch来检测连接和时间表上传任务。
这将是一个企业应用程序,所以不需要批准。
以下是代码
NSURLSessionConfiguration *config = [NSURLSessionConfiguration
backgroundSessionConfiguration:@"background" ];
NSURLSession *upLoadSession = [NSURLSession sessionWithConfiguration:config delegate:self
delegateQueue:[NSOperationQueue mainQueue]];
NSURL *url = [NSURL URLWithString:@"http://www.t9l.com/rest/test/httprawdata"];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url];
[request setHTTPMethod:@"POST"];
NSString* [email protected]"nitin=asd";
[request setHTTPBody:[str dataUsingEncoding:NSUTF8StringEncoding]];
self.uploadTask = [upLoadSession uploadTaskWithRequest:request fromFile:filePath] ;
[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];
[self.uploadTask resume];
当你失去网络时,你确定会得到'-didCompleteWithError:'吗?你能发布你得到的东西吗(例如'NSLog(@“error%@”,error);')? –
@ClayBridges对不起,回复迟了。我已经添加了我的代码来创建上传任务。但是这个委托永远不会收到回调 - (void)URLSessionDidFinishEventsForBackgroundURLSession:(NSURLSession *)session – awasthinitin10