Я написал этот код, он уже запущен, но он запускается случайным образом, мне нужна синхронизация в определенное время каждый день в фоновом режиме или в активном или неактивном режиме
Обязательно: разрешить реализацию кода только один раз за часы 2: 00:00 в день
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
application.setMinimumBackgroundFetchInterval(86400)
}
func UploadJSON(completion: ((Bool,Error?) -> Void )? = nil) {
let data:String = "test sync"
let session = URLSession.shared
let request = NSURLRequest(url: NSURL(string: "my Url")! as URL)
let dataToUpload = data.data(using: String.Encoding.utf8)
let uploadTask = session.uploadTask(with: request as URLRequest, from: dataToUpload,completionHandler: { (responseData, response, error) in
// Check on some response headers (if it's HTTP)
if let httpResponse = response as? HTTPURLResponse {
switch httpResponse.statusCode {
case 200..<300:
print("Success")
case 400..<500:
print("Request error")
case 500..<600:
print("Server error")
case let otherCode:
print("Other code: \(otherCode)")
}
}
// Do something with the response data
if let
responseData = responseData,
let responseString = String(data: responseData, encoding: String.Encoding.utf8) {
print("Server Response:")
print(responseString)
}
// Do something with the error
if let error = error {
print(error.localizedDescription)
completion?(false, error)
}
})
uploadTask.resume()
}
func application(_ application: UIApplication, performFetchWithCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
downloadJSON() { (newData,error) in
if error != nil {
NSLog("Failed")
completionHandler(.failed)
} else {
NSLog("success")
completionHandler(.newData)
}
}
}
В коде нет ошибок, но он не работает в определенное время, но работает случайным образом