Есть ли способ определить фактическое время и дату в iOS (а не время устройства)
В iOS мне нужно знать фактическое время (UTC), а не время устройства. Другими словами, пользователь не должен вмешиваться со временем или датой.
Все, что требует сетевого подключения, не очень хорошо (так что доступ к серверу времени не является вариантом).
AFAIK, есть 2 теоретических способа достижения этого:
- Использовать метку времени из спутникового сигнала GPS
- Получить текущее время с носителя
Проблема в том, что эта информация не раскрывается никаким API в iOS.
Есть ли другой способ?
Ответы
Ответ 1
Большинство решений, которые вы могли бы найти (включая получение данных GPS из CoreLocation для доступа к информации о времени), являются ошибочными, поскольку они зависят от фактического устройства для доступа к времени. Вам нужно будет подключиться к серверу времени (я бы предложил проверить сервер NTP). Я смотрел на основную инфраструктуру телефонии и не мог найти ничего, что обеспечило бы сетевое время. Вы можете заполнить отчет об ошибке и запросить яблоко, чтобы расширить один из классов, чтобы включить время.
Ответ 2
Вы можете посмотреть в секундахFromGMTForDate: и secondsFromGMT в NSTimeZone. Если смещение GMT увеличивается или уменьшается при изменении времени устройства, это обеспечивает возможность корректировать ваши отметки времени по GMT (и, возможно, конвертировать в UTC).
Ответ 3
Вы не можете добраться до необработанных GPS-данных, а свойство timestamp CLLocation в locationManager:didUpdateLocations
: установлено с системным часом