Подтвердить что ты не робот

Есть ли способ определить фактическое время и дату в iOS (а не время устройства)

В iOS мне нужно знать фактическое время (UTC), а не время устройства. Другими словами, пользователь не должен вмешиваться со временем или датой.

Все, что требует сетевого подключения, не очень хорошо (так что доступ к серверу времени не является вариантом).

AFAIK, есть 2 теоретических способа достижения этого:

  • Использовать метку времени из спутникового сигнала GPS
  • Получить текущее время с носителя

Проблема в том, что эта информация не раскрывается никаким API в iOS.

Есть ли другой способ?

4b9b3361

Ответ 1

Большинство решений, которые вы могли бы найти (включая получение данных GPS из CoreLocation для доступа к информации о времени), являются ошибочными, поскольку они зависят от фактического устройства для доступа к времени. Вам нужно будет подключиться к серверу времени (я бы предложил проверить сервер NTP). Я смотрел на основную инфраструктуру телефонии и не мог найти ничего, что обеспечило бы сетевое время. Вы можете заполнить отчет об ошибке и запросить яблоко, чтобы расширить один из классов, чтобы включить время.

Ответ 2

Вы можете посмотреть в секундахFromGMTForDate: и secondsFromGMT в NSTimeZone. Если смещение GMT ​​увеличивается или уменьшается при изменении времени устройства, это обеспечивает возможность корректировать ваши отметки времени по GMT (и, возможно, конвертировать в UTC).

Ответ 3

Вы не можете добраться до необработанных GPS-данных, а свойство timestamp CLLocation в locationManager:didUpdateLocations: установлено с системным часом