在 iOS 7+ 上,如何强制系统而不是应用程序执行下载操作 运行?

on iOS 7+, how to force a download operation to be run by the system rather than the app?

我想在 iOS 7+ 应用程序中测试大文件的后台下载。

我正在使用 NSURLSession,后台配置如 Apple documentation on Background Execution 中所述。

文档指出 "Once configured, your NSURLSession object seamlessly hands off upload and download tasks to the system at appropriate times."

我正在尝试创建这样的适当时间,以便我可以在发布前测试应用程序。各种例子表明,我可以简单地将不同的应用程序带到前台来触发后台下载任务向系统的切换。

然而,事实并非如此。相反,下载在应用程序的控制下完成。

重要的是

- (void)application:(UIApplication *)application
handleEventsForBackgroundURLSession:(NSString *)identifier
  completionHandler:(void (^)(void))completionHandler

从不在我的应用程序委托中运行。

我曾尝试在 iOS 模拟器和实际设备上强制切换,但没有成功。

关于强制将后台下载移交给系统的方法的想法将不胜感激。

没有"handover"。后台会话中的每个任务 总是 在单独的进程中运行,period。

然而,application:handleEventsForBackgroundURLSession:completionHandler: 方法仅在您的应用在下载过程中被 OS 终止(而非 被用户终止时运行进步。如果发生这种情况,只要下载完成,您的应用就会在后台重新启动。

您可以通过在后台开始大量下载来测试这一点,这将花费足够长的时间来完成您的应用程序将被驱逐...或者切换到另一个占用 RAM 的应用程序,直到您的应用程序被驱逐.