URLSession后台上传-没有Internet连接

时间:2018-09-28 13:06:56

标签: swift urlsession background-fetch

我正在将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
    //}
}

1 个答案:

答案 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阻止:取消任务并显示消息