Получить онлайн время в Swift - PullRequest
0 голосов
/ 21 февраля 2019

Мое приложение требует, чтобы пользователь был в сети, и я пытаюсь узнать время на сервере, даже если пользователь меняет свою дату.Я нашел этот код, и он работает только при первом запуске приложения.Затем в следующий раз он зависает, и я должен изменить веб-сайт.Каждый раз, когда я меняю веб-сайт, сразу же после этого я получаю дату и время.

Код:

func getTimeFromServer(completionHandler:@escaping (_ getResDate: Date?) -> Void){
    let url = URL(string: "https://www.apple.com")
    let task = URLSession.shared.dataTask(with: url!) {(data, response, error) in
        let httpResponse = response as? HTTPURLResponse
        if let contentType = httpResponse!.allHeaderFields["Date"] as? String {
            //print(httpResponse)
            let dFormatter = DateFormatter()
            dFormatter.dateFormat = "EEE, dd MMM yyyy HH:mm:ss z"
            let serverTime = dFormatter.date(from: contentType)
            completionHandler(serverTime)
        }
    }
    task.resume()
}

1 Ответ

0 голосов
/ 21 февраля 2019

Все же лучше использовать NTP-сервер, но попробуйте использовать следующее, которое игнорирует кэширование:

func getTimeFromServer(completionHandler:@escaping (_ getResDate: Date?) -> Void){
    let url = URL(string: "https://www.apple.com")
    let urlRequest = URLRequest(url: url!, cachePolicy: .reloadIgnoringLocalCacheData, timeoutInterval: 20)
    let task = URLSession.shared.dataTask(with: urlRequest) {(data, response, error) in
        let httpResponse = response as? HTTPURLResponse
        if let contentType = httpResponse!.allHeaderFields["Date"] as? String {
            //print(httpResponse)
            let dFormatter = DateFormatter()
            dFormatter.dateFormat = "EEE, dd MMM yyyy HH:mm:ss z"
            let serverTime = dFormatter.date(from: contentType)
            completionHandler(serverTime)
        }
    }
    task.resume()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...