gpt4 book ai didi

ios - AFNetworking 后台下载一段时间后自动停止,我需要恢复它

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:59:19 25 4
gpt4 key购买 nike

我正在使用 AFNetwork(它基于 NAFDownloadRequestOperation),我的任务是从亚马逊存储桶中一个一个地下载多个 zip 文件。当应用程序处于前台时,一切都运行良好,但是当应用程序进入后台模式时,下载只运行了一段时间,它会自动停止。我读了一些关于它的博客,因为我在下载停止之前调用了以下方法。

 [self.operationUpdate setShouldExecuteAsBackgroundTaskWithExpirationHandler:^{
NSLog(@"downloading will stop");
}];
  • 问题后台模式下载自动停止
  • 我想要的:如果下载在后台停止,当应用程序再次出现在前台时,我需要从那时起继续下载。

我还在 AppDelegate 中使用了以下代码,但我不明白如何恢复之前的下载。

__block UIBackgroundTaskIdentifier backgroundTaskIdentifier = [application beginBackgroundTaskWithExpirationHandler:^(void) {
[application endBackgroundTask:backgroundTaskIdentifier];
NSLog(@"applicationWillResignActive");

[__SERVER_INSTANCE cancellAllDownloading];

// [[YourRestClient sharedClient] cancelAllHTTPOperations];
}];

如果有人有任何解决方案,请告诉我,在此先感谢。

最佳答案

你应该使用 AFDownloadRequestOperation

你的请求看起来像

AFDownloadRequestOperation *operation = [[AFDownloadRequestOperation alloc] initWithRequest:request targetPath:path shouldResume:YES];
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"Successfully downloaded file to %@", path);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@", error);
}];
[operations addObject:operation];

重新启动应用程序并生成具有相同 url 的请求后,它将恢复下载。 “shouldResume:YES”有效。

因此,在您的后台任务中,您可以重新创建完成下载的请求

__block UIBackgroundTaskIdentifier backgroundTaskIdentifier = [application beginBackgroundTaskWithExpirationHandler:^(void) {
[application endBackgroundTask:backgroundTaskIdentifier];
NSLog(@"applicationWillResignActive");

[__SERVER_INSTANCE cancellAllDownloading];

// recreate here your request to finish fownload,
//or recreate in when app will enter foreground
}];

希望对你有帮助

关于ios - AFNetworking 后台下载一段时间后自动停止,我需要恢复它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31176421/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com