gpt4 book ai didi

ios - 重启应用后如何恢复下载任务(NSURLSessionDownloadTask)

转载 作者:可可西里 更新时间:2023-11-01 06:15:30 25 4
gpt4 key购买 nike

我添加“下载任务”并终止应用进程。

运行app后,获取[manager downloadTasks];并恢复所有。但文件未加载到 Documets 目录中。

我使用 AFNetworking 2.0 ( https://github.com/AFNetworking/AFNetworking )

完整代码 - https://github.com/nullproduction/FileDownloader

//
// DownloadsViewController.m
//

#import "DownloadsViewController.h"

@implementation DownloadsViewController

- (id)init
{
[self printDocumentsPath];

NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration backgroundSessionConfiguration:@"downloads"];

manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];
NSArray *downloadTasks = [manager downloadTasks];

if (downloadTasks.count)
{
NSLog(@"downloadTasks: %@", downloadTasks);
// resume all
for (NSURLSessionDownloadTask *downloadTask in downloadTasks)
{
[downloadTask resume];
}
}

return [super init];
}

- (void)addDownloadTask:(id)sender
{
NSURL *URL = [NSURL URLWithString:@"http://www.rarlab.com/rar/wrar500.exe"];

NSURLRequest *request = [NSURLRequest requestWithURL:URL];

NSURLSessionDownloadTask *downloadTask = [manager downloadTaskWithRequest:request
progress:nil
destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) {
NSURL *documentsDirectoryPath = [NSURL fileURLWithPath:[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject]];
return [documentsDirectoryPath URLByAppendingPathComponent:[targetPath lastPathComponent]];
} completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) {
NSLog(@"File downloaded to: %@", filePath);
}];
[downloadTask resume];

NSLog(@"%d", downloadTask.taskIdentifier);
}

- (void)viewDidLoad
{
[super viewDidLoad];
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"addDownloadTask" style:UIBarButtonItemStyleBordered target:self action:@selector(addDownloadTask:)];
}

- (void)printDocumentsPath
{
NSString *documentsDirectoryPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
NSLog(@"%@", documentsDirectoryPath);
}



@end

最佳答案

我注意到,下载完成后在 finder 中查看文档目录时,文件不存在。但是,当从应用程序访问文件时,它会找到它。一段时间后(一分钟内),该文件最终出现在 documents-dir 中。这可能是仅与模拟器相关的问题。

关于ios - 重启应用后如何恢复下载任务(NSURLSessionDownloadTask),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19790414/

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