iOS "реальное" время для определенной TimeZone в автономном режиме - PullRequest
1 голос
/ 26 марта 2012

Это сценарий:

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

Вот в чем проблема, если их устройство устанавливает время различий, как раньше, чем в реальном времени. Это было бы большой проблемой, потому что это для медицинского использования.

  • Итак, как я могу получить "реальное" время, даже если нет соединения?
  • Или возможно ли запретить пользователю изменять время устройства, используя что-то вроде ограничений или DeviceProfile?

Ответы [ 4 ]

2 голосов
/ 14 апреля 2012

Это только потому, что Apple - это Большой Брат, о котором они утверждали, что сражались в 1984 году. Добро пожаловать в 1984! В противном случае у нас был бы доступ в режиме реального времени и английская версия формата даты ISO! : - / Каждый iPwn, а теперь и другие устройства, имеют GPS-приемник и возможность подключения к Интернету, из которых можно получить точную долю секунды, однако Apple настаивает на том, чтобы мы полагались на AT & T для автоматической установки наших часов. Только недавно AT & T начала показывать точное время, слава богу, за небольшие услуги.

Отсутствие настроек времени GPS и NTP, а также вопиющее упущение форматирования даты ISO 8601 с другими форматами и языками США, чрезвычайно раздражает ежедневно.

Итак, ответ на ваш вопрос: да, это возможно, но не в джейле Apple, поскольку вы не можете установить RTC с GPS или NTP без джейлбрейка.

PS: я предполагаю, что AT & T настаивает на этом из-за хронометража звонков или чего-то глупого, что связано с взиманием с нас большего количества денег! ; -)

1 голос
/ 26 марта 2012

Вы получаете реальное время от [дата NSDate]. Например, следующее:

[[NSDate date] timeIntervalSince1970]

дает количество секунд с полуночи 01.01.1970 UTC. Это не зависит от часового пояса и не зависит от времени, установленного пользователем. Если вы знаете часовой пояс, вы можете преобразовать его в местное время с помощью NSDateFormatter, если хотите, но не забудьте также записать часовой пояс, чтобы сделать представление уникальным.

РЕДАКТИРОВАТЬ: Извините, этот ответ на самом деле не является правильным. После попытки выясняется, что установка времени пользователем также изменяет значения NSDate.

0 голосов
/ 26 марта 2012

NSDate и все связанные классы читают дату из системного времени.Без подключения к Интернету класс NSDate открыт для злоупотреблений со стороны пользователя.

Я использовал пример в комментарии к ответу Фишинеара о Фармвилле.Если пользователь сажает некоторые культуры, для выращивания которых требуется пять часов, вы можете просто изменить системное время на пять часов в будущем для сбора урожая.Это, я уверен, является одной из причин, по которым Zynga требует подключения к Интернету, чтобы играть в их игры.

Без некоторого аппаратного обеспечения времени Apple не может реально определить время без подключения к интернету;даже если бы у них было какое-то удивительное решение, они должны были бы учитывать часовые пояса и даже путешествовать по часовым поясам, чтобы сделать эту работу.

На вашем месте я бы потребовал подключения к Интернету по указаннойинтервалы (один раз в день и т. п.), чтобы нарисовать ссылку.

Сообщите нам, зачем вам это нужно, и мы сможем предложить несколько жизнеспособных альтернатив в функции.

0 голосов
/ 26 марта 2012

Итак, как я могу получить «реальное» время, даже если нет соединения?

Если под «нет связи» вы подразумеваете «нет какого-либо сетевого соединения»,Ответ в том, что вы не можете.

Я думаю, что лучшее, что вы можете сделать, это отключить эту функцию, если вы не можете найти способ самостоятельно проверить системное время (и сообщить пользователю, почему).

...