Мы разрешаем пользователям подключаться к часам через наше интерактивное приложение.
Мы также разрешаем офлайн-тайм-аут, сохраняя местоположение GEO и временную метку действия и ожидая активного подключения к Интернету.
Есть ли способ определить, изменил ли умный пользователь время работы устройства во время автономной работы и синхронизации?
Мы думали, что мы можем начать некоторый интервал, когда приложение последний раз связалось с сервером, но лучший вариант? Я не уверен, правильно ли будет выполняться интервал, когда приложение находится в фоновом режиме и тому подобное.
Я нашел следующий Gist, который возвращает количество секунд с момента загрузки устройства.
С этим модулем NPM, который основан на Gist, я делаю следующее:
Единственная ошибка неспособна обнаружить "истинное" время устройства, которое было перезапущено во время автономной работы. Тем не менее, наш PM может просто решить заблокировать автономные проверки для этого сценария.
Используя Node.JS, вы можете захватить время безотказной работы системы. См. Https://nodejs.org/api/os.html#os_os_uptime.
Сценарий - os.uptime()
и возвращается как целое число. Если они изменят свои часы/дату, это число по-прежнему будет продолжать тикать. Вы можете проверить дельту, чтобы увидеть, изменили ли они свое время (обратите внимание: изменения в часовых поясах могут по-прежнему возникать естественным образом). Если они перезапустят свое устройство, установите свое текущее время в качестве новой базовой линии и продолжите проверку изменений оттуда.
Это не мешает всему (так как все не предотвратимо), но уверен, что это намного сложнее обойти, предполагая, что они могут понять, что делает ваш черный ящик.
Замечания:
Модуль: const os = require('os');
Ex Использование:
console.log(require('os').uptime())
Если вы просто хотите получить "трудное время мошенничества":
var now = +new Date(); // or contact server
setInterval(() => now += 1000, 1000);
// Somewhen:
console.log(new Date(now));
Это немного сложно, вместо активной проверки вы можете сделать пассивную проверку мошеннических часов.
Вы можете запустить фоновое задание, которое получает время устройства каждый час или каждые 10 минут и сохраняет таблицу базы данных (скажем, timelog_table).
Теперь, если пользователь меняет время устройства и отправляется в будущем! или в прошлом! вы сможете увидеть колебания в timelog_table
теперь вам решать, что вы хотите обработать/проанализировать этот timelog_table на самом устройстве или на стороне сервера.
Я бы предложил сделать это на стороне сервера, но здесь вам нужно будет отправить эти данные на сервер.
process.uptime()
в начале запуска приложения и проверить дельту
Вы можете ответить Альберту и добавить еще один крючок.
Вы можете отслеживать время с интервалом и видеть изменения.
Что-то вроде qaru.site/questions/645962/...
Единственная установленная здесь мобильная ОС обычно ограничивает фоновые действия...