我想测试iOS 7+应用程序中大文件的后台下载。
我正在使用NSURLSession
的背景配置,如Apple documentation on Background Execution中所述。
文档指出“配置完成后,您的NSURLSession对象会在适当的时间无缝地将上传和下载任务移交给系统。”
我正在尝试创建这样合适的时间,以便我可以在发布之前测试应用。各种示例表明我可以简单地将不同的应用程序带到前台以触发后台下载任务切换到系统。
但事实证明并非如此。相反,下载在应用程序的控制下完成。
重要的是
- (void)application:(UIApplication *)application
handleEventsForBackgroundURLSession:(NSString *)identifier
completionHandler:(void (^)(void))completionHandler
永远不会在我的应用程序委托中运行。
我试图在iOS模拟器和实际设备上强制切换,但没有运气。
关于如何强制移交后台下载到系统的想法将不胜感激。
答案 0 :(得分:0)
没有“移交”。后台会话始终中的每个任务都在一个单独的进程中运行。
但是,application:handleEventsForBackgroundURLSession:completionHandler:
方法仅在您的应用程序在下载过程中被操作系统终止(用户不)时才会运行。如果发生这种情况,只要下载完成,您的应用就会在后台重新启动。
你可以通过在后台启动一个大型下载来测试这个问题,这个下载需要足够长的时间来完成你的应用程序将被驱逐......或者切换到另一个应用程序,这个应用程序会在你的应用程序被驱逐之前在RAM上运行。< / p>