2016-06-06 9 views
0

nicht funktioniert IchAFNetworking 3.0 Hintergrund hochladen

-(void)uploadMultipleImagesUsingAFNetworkingMultipartFormat:(id)sender { 

NSArray * directoryContents = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:[[FileUtility basePath] stringByAppendingPathComponent:[self getPathOfRootImageFolderDocumentId:@"1"]] error:nil]; 

NSString *path = [directoryContents objectAtIndex:0]; 

NSString* filePath=[[[FileUtility basePath] stringByAppendingPathComponent:[self getPathOfRootImageFolderDocumentId:@"1"]] stringByAppendingPathComponent:path]; 

NSURLSessionConfiguration *config = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:@"com.uploadDocument.Background"]; 

MBProgressHUD *progres = [MBProgressHUD showHUDAddedTo:[[AppDelegate sharedInstance] window] animated:YES]; 
progres.mode = MBProgressHUDModeDeterminateHorizontalBar; 
progres.progress = 0.0; 

if (!self.sessionManager) { 
    _sessionManager = [[AFHTTPSessionManager alloc] initWithSessionConfiguration:config]; 

} 
NSError *error; 
NSMutableURLRequest *requet= [[AFHTTPRequestSerializer serializer] multipartFormRequestWithMethod:@"POST" URLString:@"URLTO UPLOAD" parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) { 
    NSError *error1; 
    [formData appendPartWithFileURL:[NSURL fileURLWithPath:filePath] name:@"fileUpload" fileName:path mimeType:@"image/jpeg" error:&error1]; 
    NSLog(@"%@",error1); 


} error:&error]; 


NSURLSessionUploadTask *uploadTask = [self.sessionManager uploadTaskWithRequest:requet fromFile:[NSURL fileURLWithPath:filePath] progress:^(NSProgress * _Nonnull uploadProgress) { 
    dispatch_async(dispatch_get_main_queue(), ^{ 
     [progres setProgress:uploadProgress.fractionCompleted]; 
    }); 

    NSLog(@" Progress %f",uploadProgress.fractionCompleted); 
} completionHandler:^(NSURLResponse * _Nonnull response, id _Nullable responseObject, NSError * _Nullable error) { 
    dispatch_async(dispatch_get_main_queue(), ^{ 
     [MBProgressHUD hideHUDForView:[AppDelegate sharedInstance].window animated:YES]; 
    }); 

}]; 
[uploadTask resume]; 


} 

umgesetzt haben, aber wenn ich es im Hintergrund setzen, und nach einiger Zeit aktiv gesetzt. Ich beobachte diesen Prozess von wo aus pausiert wird.

Wie wird die Aufgabe auch im Hintergrund fortgesetzt?

+0

Verweisen Sie auf diesen Beitrag http://stackoverflow.com/questions/7800614/does-afnetworking-have-backgrounding-support/7881866#7881866 – kb920

+0

Ist Ihr Problem gelöst? –

+0

nein, keine Lösung finden @EktaMakadiya –

Antwort

1

enter image description here

plz auf dem Hintergrund im Hintergrund Modi holt dann versuchen :)

+0

ok, ich werde es versuchen thnx für die Antwort –

0

Sie müssen nur unten Code hinzufügen, da es Fehler in NSURLSessionTask für die Hintergrundaufgabe.

// Prepare a temporary file to store the multipart request prior to sending it to the server due to an alleged 
// bug in NSURLSessionTask. 
NSString* tmpFilename = [NSString stringWithFormat:@"%f", [NSDate timeIntervalSinceReferenceDate]]; 
NSURL* tmpFileUrl = [NSURL fileURLWithPath:[NSTemporaryDirectory() stringByAppendingPathComponent:tmpFilename]]; 


// Dump multipart request into the temporary file. 
[[AFHTTPRequestSerializer serializer] requestWithMultipartFormRequest:requet 
              writingStreamContentsToFile:tmpFileUrl 
                completionHandler:^(NSError *error) 
{ 
    // Once the multipart form is serialized into a temporary file, we can initialize 
    // the actual HTTP request using session manager. 


    // Here note that we are submitting the initial multipart request. We are, however, 
    // forcing the body stream to be read from the temporary file. 

    NSURLSessionUploadTask *uploadTask = [self.sessionManager uploadTaskWithRequest:requet fromFile:tmpFileUrl progress:^(NSProgress * _Nonnull uploadProgress) { 
     dispatch_async(dispatch_get_main_queue(), ^{ 
      [progres setProgress:uploadProgress.fractionCompleted]; 
     }); 

     NSLog(@" Progress %f",uploadProgress.fractionCompleted); 
    } completionHandler:^(NSURLResponse * _Nonnull response, id _Nullable responseObject, NSError * _Nullable error) { 
     dispatch_async(dispatch_get_main_queue(), ^{ 
      [MBProgressHUD hideHUDForView:[AppDelegate sharedInstance].window animated:YES]; 
     }); 

    }]; 

    [uploadTask resume]; 
}]; 

Hoffe, das wird Ihnen helfen. Und wenn Sie irgendwelche Fragen haben, dann fragen Sie bitte.

Verwandte Themen