как сделать реализацию кода каждый день на часах 14:00 - PullRequest
0 голосов
/ 16 октября 2019

Я написал этот код, он уже запущен, но он запускается случайным образом, мне нужна синхронизация в определенное время каждый день в фоновом режиме или в активном или неактивном режиме

Обязательно: разрешить реализацию кода только один раз за часы 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)

            }
        }


    }

В коде нет ошибок, но он не работает в определенное время, но работает случайным образом

1 Ответ

0 голосов
/ 16 октября 2019

Фоновая выборка не может быть запущена по определенному расписанию, iOS определяет, когда и как часто ваше приложение получает возможность запускать фоновую выборку.

Вы можете попробовать планировать локальные тихие уведомления или даже удаленные, чтобы запускать это каждый день.

Расписание локальных уведомлений iOS

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...