In an IOS app development,user can have two methods to download file from server i.e Synchronous and Asynchronous . So before going ahead ,please take a look to the basic knowledge of these methods .
A Synchronous method is preferable in case of transferring small size data and an Asynchronous is used to transfer large size data.Asynchronous is more preferable as it downloads file asynchronously and allows the user to interact with the application while files are downloading.
Here is an example of making an Asynchronous request to the server.Before starting download ASIHttpRequest classes from here http://labs.grupow.com/blog/2011/03/28/using-asihttprequest and add it to the project.
// Initialise an array that will contains all your files,
NSMutableArray *filesToLoad = [[NSMutableArray alloc] init];
//take strings that contain file name
NSString *fileName1;
NSString *fileName2;
//Pass file name to the string
fileName1 = @"spacescene_assets-Ipad.plist";
fileName2 = @"spacescene_assets-Ipad.pvr.ccz";
//check whether the file with the same name exist on server or not uzing checkFileExistOrNot
function given below
if(![self checkFileExixtOrNot:fileName1])
{
NSURL* url1 = [NSURL URLWithString:@"http://froganator.com/froganator/files/v2/
iPad/spacescene_assets-Ipad.plist"];
//insert file url in an array
[filesToLoadabc insertObject:url1 atIndex:fileToLoad];
}
//similarly for second file
if(![self checkFileExixtOrNot:fileName2])
{
NSURL* url2 = [NSURL URLWithString:@"http://froganator.com/froganator/files/v2/
iPad /spacescene_assets-Ipad.pvr.ccz"];
//insert file url in an array
[filesToLoadabc insertObject:url1 atIndex:fileToLoad];
}
//Then traverse on "fileToLoad" array
for(int i=0;i<fileToLoad;i++)
{
NSURL *urlfinal = [filesToLoadabc objectAtIndex:i];
CCLOG(@"final url - - - -- - - %@",urlfinal);
//Making request to server and passing files url to it
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:urlfinal];
[request setDelegate:self];
[request startAsynchronous];
}
//This function checks whether the file exist or not and return a success or failure boolean
-(BOOL) checkFileExixtOrNot:(NSString *)fileNameIs
{
BOOL success;
NSFileManager *fileManager = [NSFileManager defaultManager];
NSArray *paths =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
NSString *path = [paths objectAtIndex:0];
NSString* fileName =
[path stringByAppendingPathComponent:fileNameIs];
success = [fileManager fileExistsAtPath:fileName];
return success;
}
Lets go through with the code :)
0 Comment(s)