【发布时间】:2018-06-27 12:23:57
【问题描述】:
我按照这个教程Downloading files in background with URLSessionDownloadTask
还有这个苹果文档Downloading Files in the Background
我尝试设置,因为我们有一个长时间运行的 API
let config = URLSessionConfiguration.background(withIdentifier: "\(Bundle.main.bundleIdentifier!).background")
config.timeoutIntervalForRequest = 120
config.timeoutIntervalForResource = 180
但我遇到了这个奇怪的问题:
如果服务器没有响应任何数据,意味着
func urlSession(_ session: URLSession, downloadTask: URLSessionDownloadTask, didWriteData bytesWritten: Int64, totalBytesWritten: Int64, totalBytesExpectedToWrite: Int64)
根本不会被调用。
应用程序将终止先前的请求,并每 66 秒重试一次新请求。我不知道这个数字是从哪里来的,但根据我的实验,大约是 66 秒
如果我将timeoutIntervalForRequest = 10 设置得足够好,应用程序将每 10 秒重试一次请求,但任何将其设置为 66 秒以上的尝试都不起作用
不确定是否有人遇到同样的问题并找到了解决方案。
只需 1 条注意:当达到 180 秒时,整个事情将超时,并且应用程序停止重试新请求
【问题讨论】:
标签: ios iphone timeout nsurlsession urlsession