开发一个必须下载多个文件的应用程序。当应用处于前台时我没有问题 要在应用处于后台时继续下载我正在使用以下代码(来自iOS Background downloads when the app is not active):
self.backgroundTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{ [[UIApplication sharedApplication] endBackgroundTask:self.backgroundTask]; self.backgroundTask = UIBackgroundTaskInvalid; }]; /* Here your downloading Code, let say getDataFromServer method */ [self getDataFromServer]; // Its dummy method /* Your downloading Code End Here */ dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ [[UIApplication sharedApplication] endBackgroundTask:self.backgroundTask]; self.backgroundTask = UIBackgroundTaskInvalid; });
此代码正常,直到设备屏幕开启。但是当设备进入待机状态时,会发生一些事情并且下载停止。可能ios关闭了后台进程的活跃互联网连接。
在IOS 6和7中是否有办法在待机期间保持连接活动?
答案 0 :(得分:2)
beginBackgroundTaskWithExpirationHandler
只允许大约10分钟的后台时间来完成长时间运行的过程,例如将大量用户数据保存到磁盘。这不应该用于文件下载,推荐的在后台下载文件的方法是使用NSURLSession
和NSURLSessionDownloadTask
。