iOS 离线时超时(使用 waitsForConnectivity)

问题描述 投票:0回答:1

在实现多个 HTTP 调用时,我注意到 URLSession 上有一些奇怪的行为。据我所知,URLSession 数据任务过去在网络连接不可用时会立即抛出错误(错误 -1009 Internet 连接似乎已离线)。

我现在也在执行网络请求,并且在飞行模式下执行请求时,请求会在失败之前一直运行到超时。我尝试创建一个自定义配置来防止这种情况发生,但这不起作用。如何重新启用或配置在没有连接时请求立即崩溃的行为?

let url = URL(string: "https://www.google.com/")!
let config = URLSessionConfiguration.default
config.waitsForConnectivity = false
config.timeoutIntervalForRequest = 2
config.timeoutIntervalForResource = 0

URLSession(configuration: config).dataTask(with: url) { d, r, e in
    print(d?.count, (r as? HTTPURLResponse)?.statusCode, e?.localizedDescription)
}.resume()

配置文档似乎不一致或不正确。

ios swift networking urlsession nsurlsessionconfiguration
1个回答
0
投票

我发现的一个事实。

即使在最新的 Xcode/iOS (2024) 中,该功能似乎也在模拟器中根本不起作用

在模拟器中,

func urlSession(_ session: URLSession, taskIsWaitingForConnectivity task: URLSessionTask)
可以工作,但其他都不起作用,

即当带宽恢复时,无论任何设置如何,它都不会再尝试

© www.soinside.com 2019 - 2024. All rights reserved.