ios - 在应用程序关闭时从 cancelByProducingResumeData 保存数据 [iOS7]

标签 ios iphone ios7 download

我正在 AFNetworking 的帮助下下载大文件 ~50-100Mb,我想在应用程序终止时保存它的下载状态以便稍后恢复下载。我已注册我的对象以终止通知:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(appWillTerminate) name:UIApplicationWillTerminateNotification object:nil];

当用户从应用程序切换器关闭应用程序时调用此方法:

-(void)appWillTerminate {
    NSLog(@"---------- will terminate");
    [downloadTask cancelByProducingResumeData:^(NSData *resumeData) {
        if(resumeData) {
            [self saveResumeData:resumeData];
        } else {
            [[NSFileManager defaultManager] removeItemAtPath:[self createCachePath] error:nil];
        }
    }];
}

但是这个 block :^(NSData *resumeData) 从未被调用,所以我无法保存简历数据。
此外,当应用程序首先移至后台然后关闭时,根本不会调用此方法。 我不想在进入后台时调用此方法,因为我想继续下载。我做错了什么吗?

最佳答案

尝试更改逻辑:添加“暂停按钮”,如果用户要关闭应用程序,则需要先暂停下载,然后再关闭应用程序。如果用户忽略暂停,从您之前或从头保存的位置恢复下载不是问题。这里的主要内容 - 继续在后台下载。

关于ios - 在应用程序关闭时从 cancelByProducingResumeData 保存数据 [iOS7],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22599673/

相关文章:

iphone - 您可以对 Facebook 帖子进行地理标记吗?

ios - Swift 的 Facebook SDK 文档是否过时?对应的SDK版本是多少?

objective-c - 按NSString将NSMutablearray排序为日期

iphone - Reachability startNotifier - 是否需要电话资源

iphone - 如何在 map 注释上自动显示标题/副标题(图钉)

ios - UIView重现时如何恢复动画?

iOS:在 NSFetchResultsController 执行提取时呈现一个纺车

ios - 如何通过通讯录获取用户

ios - 如何在iphone中检测运营商是否可用?

ios - CoreMotion API 和运动许可