Chcę przesłać pliki do mojego serwera z mojej aplikacji. Poniższy kod działa doskonale, gdy aplikacja jest aktywna. Jeśli naciśnie przycisk strony głównej lub zostanie otwarta inna aplikacja zostanie zatrzymana.Przesyłanie pliku w tle AFNetworking
Aktywowałem pobieranie w tle, ale nadal nie działa.
Praca w tle ma wsparcie w tle, ale nie mogę zrozumieć, w jaki sposób mogę zaimplementować tę funkcję do mojego kodu.
NSString *str=[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"Archive.zip"];
NSDictionary *parameters = @{@"foo": @"bar"};
NSURL *filePath = [NSURL fileURLWithPath:str];
AFHTTPRequestSerializer *serializer = [AFHTTPRequestSerializer serializer];
NSData *imageData=[NSData dataWithContentsOfURL:filePath];
NSMutableURLRequest *request =
[serializer multipartFormRequestWithMethod:@"POST" URLString:@"http://url"
parameters:parameters
constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
[formData appendPartWithFileData:imageData
name:@"image"
fileName:@"Archive.zip"
mimeType:@"application/zip"];
}];
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
AFHTTPRequestOperation *operation =
[manager HTTPRequestOperationWithRequest:request
success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"Success %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Failure %@", error.description);
}];
[operation setUploadProgressBlock:^(NSUInteger __unused bytesWritten,
long long totalBytesWritten,
long long totalBytesExpectedToWrite) {
NSLog(@"Wrote %lld/%lld", totalBytesWritten, totalBytesExpectedToWrite);
}];
[operation start];
udało ci się znaleźć rozwiązanie tego problemu ? –
Z dokumentu NSURLSession jabłka, wsparcie transferu w tle tylko zadania przesyłania i pobierania (bez zadań danych) z URL pliku, Według Twojego kodu wydaje się, że używasz wysyłania NSData. – vnaren001