2016-03-26 1 views
2

Мне нужно настроить время проверки пользователя в моем текущем проекте. Я нашел много разных вопросов, но ни один из них, похоже, не получил ответа, который я ищу. На эти вопросы я рассматривающие до сих пор:Проверьте, установлено ли системное время автоматически или пользователем

XCODE: How to get/verify ACCURATE timestamp from device

Is it possible to get the atomic clock timestamp from the iphone GPS?

How can I get the real time in iPhone, not the time set by user in Settings?

У меня есть несколько вариантов для получения времени от соединения с сервером, но мне нужно, чтобы иметь автономное решение слишком.

1. Кажется, что использование CLLocation получает то же время, что и часы устройства. Есть ли возможность получить фактическое время GPS?

2. Я знаю, что системные настройки времени не являются общедоступным API, поэтому его нельзя изменить. Можно ли узнать, включено ли устройство автоматической установки времени? Если автоматическое время включено, я могу полагаться на системное время для своих целей, и если он выключен, то записывайте, чтобы я знал, что записанное время не заслуживает доверия?

+0

Не можете получить фактическое время, используя временную метку GPS или NTP, и использовать это вместо системного времени (я предполагаю, что вы хотите внедрить временную пробную систему и хотите, чтобы пользователю было сложно обмануть)? – trojanfoe

+0

Я фактически создаю созданные пользователем события, которые необходимо записать с внешним источником времени, так что изменения, внесенные в системное время, не оказывают никакого влияния на созданные события. Получение времени от GPS будет прекрасным, учитывая, что мне не нужно подключение к Интернету, но пока использование location.timestamp дает то же самое время, что и системные часы. Я изменил часы системных часов вперед и назад, но location.timestamp изменился с ним. Есть ли лучший/правильный способ получить GPS-время? – joffd

ответ

0

Просто хотел опубликовать мое решение, если у кого-то еще есть такая же проблема.

После долгих исследований я обнаружил, что получение информации о времени GPS не было возможным.

Это решение не идеально и не в режиме реального времени, но работает для моей цели.

Я выполнял проверку времени с использованием облачного времени каждый раз, когда приложение приходит в очередь. Когда устройство повторно устанавливает соединение с сервером для событий синхронизации, созданных вне линии, я поставил проверку, которая занимает последнее время устройства объекта и время нового объекта устройства, и вычисляет прошедшее время между ними. (используя NSdates, чтобы покрыть летнее время), затем сделайте то же самое с последним доступным временем сервера и самым последним временем сервера. Затем я сравниваю результаты и, если они не находятся в пределах моей погрешности, события отмечены как недействительные.

Надеюсь, что это имеет смысл и полезно для других.

Смежные вопросы