我有多个网络服务要在我的应用后台进行检查和下载,使用NSURLSession
执行此操作。当应用程序在后台时,我使用以下代码:
-(void)application:(UIApplication *)application performFetchWithCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler{
[self methodToStartAllDownloads];
//Completion handler called somehow
}
问题在于,由于所有NSURLSession都有一个完成处理程序并且工作异步,因此很难知道它们何时完成,所以我可以在上面的方法中调用completionHandler(UIBackgroundFetchResultNewData)
。有没有办法在完成所有下载后调用完成处理程序?
答案 0 :(得分:1)
您可以在[self methodToStartAllDownloads];
之后调用完成处理程序,当您使用具有后台配置的NSURLSession时,您的下载和上传将交给系统,该系统将在您完成所有任务后唤醒您的应用程序。
我建议您阅读此article以更好地了解NSURLSession背景