我正在開發應用程序,允許用戶拍攝最初保存在設備中的圖像和視頻。只要設備連接到網絡(移動數據或無線網絡),就需要將這些設備上載到服務器。使用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