gpt4 book ai didi

ios - 许多具有后台 session 的任务 (NSURLSessionDownloadTask) 会导致使用 AFNetworking 失败

转载 作者:行者123 更新时间:2023-12-02 05:32:54 24 4
gpt4 key购买 nike

我们最近使用 AFNetworking 3 中的 AFURLSessionManagerAFHTTPRequestOperation 迁移到 NSURLSessionDownloadTask。我们的用户可以选择下载最多包含大约 5,000 个文件的项目。

这些文件主要是 PDF 和 MP4,大小从 10 KB 到 1 GB 不等。作为迁移到使用 NSURLSessionAFURLSessionManager 的一部分,我们很高兴能够在应用程序进入后台允许下载继续时将这些下载交给系统。但我们遇到的是这些下载将开始失败,并显示错误消息

lost connection to background transfer service

-或-

"no such file or directory"

当用户选择下载超过 500 个文件时,应用程序在后台或前台可能会发生这种情况。然后,我们会在以后的任何下载中收到这些错误消息,直到我们终止并重新启动应用程序。

如果这是 iOS 和带有后台配置的 NSURLSession 的限制,或者我们是否应该能够让它工作,你有什么想法吗?

我们的 AFURLSessionManager 看起来像这样:

NSURLSessionConfiguration *configuration =
[NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:@"com.our.app.identifier.downloads"];
[configuration setHTTPMaximumConnectionsPerHost:5];
AFURLSessionManager *sessionManager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];
[sessionManager setCompletionQueue:dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0)];

任务如下所示:

NSURLSessionDownloadTask *downloadTask = [self.sessionManager downloadTaskWithRequest:[self requestForItem:item] progress:nil

destination:^NSURL * _Nonnull(NSURL * _Nonnull targetPath, NSURLResponse * _Nonnull response) {

NSString *filePath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) objectAtIndex:0];
return [NSURL fileURLWithPath:[filePath stringByAppendingPathComponent:@"fileid.ext"]];

} completionHandler:^(NSURLResponse * _Nonnull response, NSURL * _Nullable filePath, NSError * _Nullable error) {

// check for error and notify the ui of completion

}];

最佳答案

IIRC,NSURLSession 如果您尝试向 session 添加数十个任务,则会发生爆炸。当你达到 500 的时候,你几乎肯定会打破它。这是一个已知的错误,Stack Overflow 上的其他人也遇到过这个错误并提交了相关错误。也就是说,请提交错误,因为 Apple 收到的有关该问题的错误越多,其优先级就越高。

通常的解决方法是保留一个待处理请求的外部队列,然后在其他任务完成时将任务添加到 session 中。

关于ios - 许多具有后台 session 的任务 (NSURLSessionDownloadTask) 会导致使用 AFNetworking 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41205009/

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