@klim76
android/java/sql

Как защитить приложение от подмены локального времени?

Ситуация следующая. Есть приложение в котором предусмотрена возможность работать без подключения к интернету, в это время все операции в приложении фиксируются по времени телефона, и после появления сети всё скопом отправляется на сервер.
Прицепить броадкастресивер на ACTION_TIMEZONE_CHANGED и ACTION_TIME_CHANGED я догадался, но срабатывает он уже постфактум - т.е. после того как пользователь изменил время и не понятно как узнать на сколько уехало время.
Подкиньте идею реализации.
  • Вопрос задан
  • 201 просмотр
Решения вопроса 2
@AlexDeww
А почему бы не использовать время сервера.
Например так

При появлении связи, синхронизируешь время.
object ServerTime {

    private var serverOffset: Long = System.currentTimeMillis() - SystemClock.elapsedRealtime()

    fun getTime(): Long = SystemClock.elapsedRealtime() + serverOffset

    fun syncTime(serverTime: Long) {
        serverOffset = serverTime - SystemClock.elapsedRealtime()
    }
}

Ответ написан
NeiroNx
@NeiroNx
Программист
Нужно фиксировать время через равные промежутки(например каждую минуту) - тогда погрешность будет равна промежутку.
Каждый промежуток время считываеся из хранилища, если разница больше чем 2 промежутка значит корректировка инче обновление времени в хранилище.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы