gpt4 book ai didi

ios - 下载许多文件时 AFNetworking/NSURLSession 超时

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

在我的应用程序中,用户可以一次下载多个文件。这些文件每个大约 2MB。由于用户可以一次选择任意数量的文件,因此我将 operationQueue 设置为仅允许 2 个并发操作。以下是我设置 session 管理器的方式:

NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
configuration.timeoutIntervalForRequest = 60;
AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];
[manager.operationQueue setMaxConcurrentOperationCount:2];
self.urlSessionManager = manager;

现在开始下载。但是如果所有文件的下载时间超过我指定的超时时间,所有其他 NSURLSessionDownloadTask(甚至那些甚至没有开始的人)都会失败。所以似乎超时开始计算我创建 downloadTask 的秒数,而不是他们真正开始发出请求的时间?

因为我有一个队列,我希望下载任务一开始就开始计算超时?!?

为了能够真正让用户一次下载所有这些文件,我必须更改什么?

最佳答案

基本上,如果请求从未启动(因此从不请求任何数据),则传入数据永远不会重置该计时器,这意味着该任务会在 60 秒后取消。这种行为有些不明显,可能值得提交错误。

您可以通过创建自己的 URL 协议(protocol)来解决此问题,该协议(protocol)在没有超时和连接限制的 session 中重新发出请求(以便您的代码知道请求何时真正开始),然后您自己管理超时。

关于ios - 下载许多文件时 AFNetworking/NSURLSession 超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37319091/

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