2014-09-14 32 views
8

Tôi muốn upload file lên máy chủ của tôi từ ứng dụng của tôi. Mã bên dưới hoạt động rất tốt khi ứng dụng đang hoạt động. Nếu tôi bấm nút Home hoặc mở một ứng dụng tải lên dừng lại.AFNetworking upload

tôi kích hoạt nền lấy nhưng vẫn không làm việc.

Afnetworking đã hỗ trợ nền nhưng tôi không thể tìm ra cách nào để triển khai tính năng này để mã của tôi.

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

là bạn có thể tìm thấy một giải pháp cho vấn đề này ? –

+0

Từ tài liệu NSSDSession của Apple, hỗ trợ chuyển nền chỉ tải lên và tải xuống tác vụ (không có tác vụ dữ liệu) với URL của tệp, Theo mã của bạn có vẻ như bạn đang sử dụng tải lên NSData. – vnaren001

Trả lời

6

Thay đổi dòng này

[operation start]; 

này

[operation setShouldExecuteAsBackgroundTaskWithExpirationHandler:^{ 
     // Handle iOS shutting you down (possibly make a note of where you 
     // stopped so you can resume later) 
    }]; 


    [manager.operationQueue addOperation:operation]; 

Bạn có thể nhìn vào những liên kết này AFHTTPRequestOperation doesn't work after stand by modeAlternative for enqueueHTTPRequestOperation in AFNetworking 2.0

+5

nó dừng sau một vài phút nếu ứng dụng không hoạt động. – amone

+0

@charty: có nghĩa là khi ứng dụng bị tạm ngưng bởi iOS? – BaSha