IOS:在后台下载多个文件

时间:2014-03-28 09:28:25

标签: ios background download connection standby

开发一个必须下载多个文件的应用程序。当应用处于前台时我没有问题 要在应用处于后台时继续下载我正在使用以下代码(来自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中是否有办法在待机期间保持连接活动?

1 个答案:

答案 0 :(得分:2)

beginBackgroundTaskWithExpirationHandler只允许大约10分钟的后台时间来完成长时间运行的过程,例如将大量用户数据保存到磁盘。这不应该用于文件下载,推荐的在后台下载文件的方法是使用NSURLSessionNSURLSessionDownloadTask