I\'m trying to implement downloading of a large file and show to user current progress, but block in:
-[AFURLConnectionOperation setDownloadProgressBlock:]
I have no problems with the setDownloadProgressBlock in AFNetworking.
The wiki explains how to track download progress: https://github.com/AFNetworking/AFNetworking/wiki/AFNetworking-FAQ
For progress tracking you don't need the bytesRead
(number of bytes written in a particular callback).
Example code:
[downloadoperation setDownloadProgressBlock:^(NSUInteger bytesRead, long long totalBytesRead, long long totalBytesExpectedToRead) {
float progress = ((float)totalBytesRead) / totalBytesExpectedToRead;
self.progressView.progress = progress;
}];
phix23 answered to my initial question, so there is really no problem with progress block. I'm answering to my edit.
When success block in
-[AFHTTPRequestOperation setCompletionBlockWithSuccess:failure:]
is called, I can compare the number of bytes downloaded with the number of bytes expected to download (it is not very hard to implement in code). If the number of downloaded bytes is smaller - I can continue file download from place where it was interrupted. To do this, I'm using Range
http header in NSURLRequest
, here is more information:
Continue an interrupted download on iPhone
How to implement resumable file downloads on iPhone SDK
So, the problem is not really with AFNetworking (NSURLConnection has same behavior), but, I think, developers of the framework could take into account this situation.