【发布时间】:2020-11-30 18:56:43
【问题描述】:
我正在使用带有后台上传的 URLSession。我将session委托设置为self。当我在没有 Internet 连接的情况下开始上传任务时,我没有调用任何委托方法。如果没有 Internet 连接或上传时中断,我想显示消息并取消任务。你怎么能这样做?
let session = URLSession(configuration: URLSessionConfiguration.background(withIdentifier: "background"), delegate: self, delegateQueue: nil)
let request = ...
let data = ...
let task = session.uploadTask(with: request, fromFile: dataURL)
task.resume()
当我使用非后台任务时,我可以知道它
let task = self.session.dataTask(with: request) { (data, response, error) in
//if let e = error as NSError?,
// e.code == Int(CFNetworkErrors.cfurlErrorNotConnectedToInternet.rawValue) {
// handle no internet
//}
}
【问题讨论】:
-
ReachabilitySwift是你的朋友 -
@NeilGaliaskarov 不!那太不可靠了……这不是因为超时而引发错误吗?您可以预料到这一点并继续每 X 秒重试一次
-
它不会抛出超时错误,因为它是根据优先级调度为后台任务,所以它最多可以执行一周,并且会一直等待连接。 @J.Doe
标签: swift urlsession background-fetch