我正在将URLSession与后台上传一起使用。我将session
的代表设置为self
。在没有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
//}
}
答案 0 :(得分:0)
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
//}
}
完成块从未在后台会话中调用(当您的应用程序为后台时)。 您需要使用委托,在完成所有任务后调用。
如果不使用委托。使用Reachability.whenUnreachable阻止:取消任务并显示消息