Как я могу локально обнаружить продвижение часов iPhone пользователем между запусками приложения? - PullRequest
10 голосов
/ 19 августа 2011

Обычный подвиг в казуальных играх состоит в искусственном продвижении системных часов для ускорения игрового процесса.Как такое продвижение пользовательских часов может быть обнаружено приложением на устройстве iOS?

  • Не должно включать сетевое взаимодействие
  • Не должно предполагать, что приложение открыто (работает или приостановлено), когда часыadvanced
  • Необходимо обнаруживать повышение частоты, обнаружение отката синхронизации недостаточно

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

Ответы [ 3 ]

1 голос
/ 19 августа 2011

Я думал о том, что CoreLocation может сделать это, если вам будет доступна эта часть данных GPS.Однако это заставило меня задуматься.

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

Любое решение, не связанное с сетью, , поэтому намного сложнее реализовать,Интересно, почему ты им не пользуешься?

0 голосов
/ 19 августа 2011

Хотя я не думаю, что можно надежно определить, перевел ли пользователь вручную свои часы вперед без доступа к сети, вы, конечно, можете надежно определить, путешествовали ли они назад во времени.И поскольку мы знаем, что это физически невозможно, поэтому можно предположить, что они манипулировали своими часами, чтобы обмануть.

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

Если это действительно так,затем, основываясь на предложении @smgambel, вы можете сохранять физическое время и текущий часовой пояс при каждом запуске и сравнивать с ранее сохраненным временем и часовым поясом.Если время на отстает от ранее сохраненного времени, а часовой пояс устройства не изменился, можно смело предположить, что пользователь манипулировал часами.

...