Который час, не подскажете? 🕙

#mobile_dev #ios #swift

Множество мобильных приложений в процессе своего жизненного цикла оперирует временными интервалами, метками времени и его текущим значением. Например, для контроля подписок пользователя на сервисы или услуги, отслеживания времени доставки еды или поездки на такси.

Стандартные методы Swift позволяют получать системную дату и время iOS-устройства. Такой подход считается весьма ненадежным, и его применение не рекомендуется: время пользовательского устройства легко изменить с помощью системных настроек О. С. Рассмотрим альтернативные способы получения даты и времени, а также их достоинства и недостатки.

С помощью GPS 🛰 Если работа с GPS-модулем устройства доступна, то существует возможность запросить дату и время для текущего региона с помощью объекта stripslashes(\corpsepk\yii2emt\EMT_Lib::decrypt_tag($m[2])) фреймворка CoreLocation.

Хитрость с UserDefaults. Это неоднозначное решение позволяет вычислять интервалы времени на основе сохранения времени первого запуска приложения в хранилище UserDefaults и дальнейшего отслеживания и фиксации временных интервалов в процессе работы приложения. Минус очевиден — все теряет смысл, если приложение удалить, а затем установить повторно 😭

NTPD. Весьма стабильный и надежный способ, если исключить возникновение сетевых проблем. Из популярных библиотек есть TrueTime и Kronos.

NTS. Cервис Cloudflare Secure Time Service, например, предоставляет возможность получения даты и времени посредством протокола NTS, обеспечивающего дополнительное шифрование для NTP.

С помощью backend-сервера. Если приложение взаимодействует с backend-сервером, например, по RESTful API и разработчики серверной логики — ваши близкие друзья или вы вообще одна команда, то попросите сделать для вас еще один REST-метод, возвращающий дату и время в нужном вам формате 😎

Оригинал

Такого поста не существует