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

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

Все, что требует подключения к сети, не годится (поэтому доступ к серверу времени невозможен).

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

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

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

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

3 ответа

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

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

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

Другие вопросы по тегам