Search code examples
iosuiapplicationdelegatebackground-task

Continue download in background


I am creating an application wherein I am downloading some data from server. While going in background I want that connection should continue running so that data can be downloaded. I know there is method in appDelegate

- (void)applicationDidEnterBackground:(UIApplication *)application  

which is called when application enters background. But as the connection is created in viewController, how can it be managed in appDelegate?
Also is/are there other way(s) this can be done? I have gone through this link but is there a something simple to implement?


Solution

  • One way to do some operations that continue in the background is to create a separate thread to do the downloading. Inside the thread, bracket your download operations between calls to beginBackgroundTaskWithExpirationHandler: and endBackgroundTask. You don't need to check to see whether you are running in the background or not, you just always call these two methods.

    // Tell iOS this as a background task in case we get backgrounded
    UIBackgroundTaskIdentifier taskId = [[UIApplication sharedApplication] 
              beginBackgroundTaskWithExpirationHandler:NULL];
    
    //----------------------------------------------
    // Perform your download operations here
    //----------------------------------------------
    ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
    
    // Tell iOS that we are done with stuff that needed to keep going even if backgrounded    
    [[UIApplication sharedApplication] endBackgroundTask:taskId];