I have a button when click on it, save some information to firebase, but I want to wait (for example 1 minute) If the internet not available, and execute post if internet come back.
my code :
class AddReserve: UIViewController
{
var configuration = URLSessionConfiguration()
var session = URLSession()
var task = URLSessionTask()
override func viewDidLoad() {
super.viewDidLoad()
configuration = URLSessionConfiguration.default
configuration.allowsCellularAccess = true
configuration.timeoutIntervalForResource = 60 //seconds
if #available(iOS 11, *)
{
configuration.waitsForConnectivity = true
}
session = URLSession(configuration: configuration, delegate: self as? URLSessionDelegate, delegateQueue: nil)
}
@IBAction func buttonPost(_ sender: UIButton)
{
task = URLSession.shared.dataTask(with: URL(string: "https://www.google.com")!)
{ data, response, error in
self.addImage.titleLabel?.text = "starting.."
print("status waiting starting")
self.addImage.titleLabel?.textColor = .white
if data != nil
{
print("data \(String(describing: data))")
print("status waiting connected")
DispatchQueue.main.async()
{
// execute on main thread
postReserve()
print("status waiting completed")
}
}
else
{
print("status waiting no connect")
}
}
task.resume()
}
func urlSession(_ session: URLSession, taskIsWaitingForConnectivity task: URLSessionTask) {
// waiting for connectivity, update UI, etc.
print("status waiting")
}
func postReserve()
{
print("post sent successfully")
}
}