У меня есть приложение, которое требует от меня действия через некоторое время. Например, если пользователь не был в приложении в течение нескольких недель, когда пользователь в конечном итоге запускает приложение, я должен попросить его ввести специальный код, который был им предоставлен при установке этого приложения. (это собственное приложение, и я обязан сделать это из соображений безопасности)
Я использую метод [NSDate date], чтобы получить дату входа пользователя в систему и сохранить ее в базе данных. Я сравниваю эту сохраненную дату в следующий раз, когда они открывают приложение, и вижу, сколько времени прошло с момента их последнего входа в систему. Проблема в том, что [NSDate date] дает время, на которое влияют настройки времени, которые могут быть изменены пользователем вручную в приложении собственных настроек. Как вы, вероятно, можете сказать, это вызывает много проблем в моей ситуации. Если пользователь должен ввести специальный код после 3 недель бездействия, он может заставить приложение показать этот экран, изменив время в приложении с собственными настройками или, что еще хуже, убежать от него, установив время на предыдущую дату это будет через 3 недели после его активности.
Есть ли способ получить "системное время" вместо "пользовательского времени"? Я посмотрел в mach_absolute_time (), но это сбрасывается после перезагрузки устройства. Поскольку время бездействия, с которым я буду сравнивать, довольно велико, скорее всего, к тому времени устройство будет перезапущено. Я также думал об использовании сетевого подключения, чтобы получать время от серверов вне приложения, но многие пользователи не будут иметь доступа к Wi-Fi, где они используют свои iPad. Это будет моим последним решением, если я не смогу найти ничего другого. Из-за их расположения во время использования я пытаюсь использовать все на самом устройстве.
Я пропускаю что-то простое здесь? это кажется слишком простой проблемой, чтобы не иметь ответа. Пожалуйста, ведите меня в правильном направлении. Заранее спасибо.