在具有多个NSURLSessions的后台提取上调用完成处理程序

时间:2014-10-17 08:50:31

标签: ios objective-c nsurlsession

我有多个网络服务要在我的应用后台进行检查和下载,使用NSURLSession执行此操作。当应用程序在后台时,我使用以下代码:

-(void)application:(UIApplication *)application performFetchWithCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler{
    [self methodToStartAllDownloads];
    //Completion handler called somehow
}

问题在于,由于所有NSURLSession都有一个完成处理程序并且工作异步,因此很难知道它们何时完成,所以我可以在上面的方法中调用completionHandler(UIBackgroundFetchResultNewData)。有没有办法在完成所有下载后调用完成处理程序?

1 个答案:

答案 0 :(得分:1)

您可以在[self methodToStartAllDownloads];之后调用完成处理程序,当您使用具有后台配置的NSURLSession时,您的下载和上传将交给系统,该系统将在您完成所有任务后唤醒您的应用程序。

我建议您阅读此article以更好地了解NSURLSession背景