In iOS when we download any content , there may be a need to show the progress of the download. It's easy in iOS. We can download the data with NSURLConnection.
First of all create a UIProgressBar in your view and initially make it hidden. Lets say we have a progress bar outlet named progressBar .
1) Create NSURLConnection object
First of all create a UIProgressBar in your view and initially make it hidden. Lets say we have a progress bar outlet named progressBar .
1) Create NSURLConnection object
NSURL *url = [NSURL URLWithString:@"Your_url"];
NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:80];
NSMutableData *dataReceived = [[NSMutableData alloc] initWithLength:0];
NSURLConnection * connection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self startImmediately:YES];
2) Now implement the delegate methods of the NSURLConnection
In this method we receive the response of the download, from which we get the expected content length.Also we make the progress bar unhidden here.
- (void) connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
self.progressBar.hidden = NO;
[dataReceived setLength:0];
long long expectedDataBytes = [response expectedContentLength];
}
In didReceiveData:(NSData*)data method we get the downloaded data chunks, here we append the data to dataReceived object . And also set the progress bar by download progress .
- (void) connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
[dataReceived appendData:data];
float downloadProgress = (float)[dataReceived length] / (float) expectedDataBytes;
[self.progressBar setProgress: downloadProgress];
}
When downloading is complete the connectionDidFinishLoading:(NSURLConnection*)connection method is called. Here we can save the downloaded content to the document directory.
- (void) connectionDidFinishLoading:(NSURLConnection *)connection {
}
Here I make the expectedDataBytes and dataReceived object local .You have to declare them to interface section of the file to use them in all methods.
Reference:
No comments:
Post a Comment