首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在应用程序运行之间本地检测用户的iPhone时钟进程?

如何在应用程序运行之间本地检测用户的iPhone时钟进程?
EN

Stack Overflow用户
提问于 2011-08-19 13:22:48
回答 3查看 5.5K关注 0票数 10

在休闲游戏中,一个常见的漏洞是人为地提前系统时钟,使其在游戏中领先。iOS设备上的应用程序如何检测到这样的用户时钟进程?

communication

  • Must
  • 不应假定应用程序是开放的(运行或挂起的),而时钟是高级的
  • 必须检测时钟进程,检测时钟回滚是不够的

理想情况下,解决方案在重新启动时是健壮的,但这不是一个要求。

EN

回答 3

Stack Overflow用户

发布于 2011-08-19 13:56:04

CACurrentMediaTime & mach_absolute_time

看一看这些问题:

iOS: How to measure passed time, independent of clock and time zone changes?

Calculating number of seconds between two points in time, in Cocoa, even when system clock has changed mid-way

CACurrentMediaTime使用mach_absolute_time:http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/CoreAnimation_functions/Reference/reference.html

这里有一个关于如何使用CACurrentMediaTime:http://www.informit.com/blogs/blog.aspx?b=02b4e309-308c-468a-bab1-cebb1404be6a的示例

这里有关于mach_absolute_time的更多信息:http://developer.apple.com/library/mac/#qa/qa1398/_index.html http://shiftedbits.org/2008/10/01/mach_absolute_time-on-the-iphone/

票数 11
EN

Stack Overflow用户

发布于 2011-08-19 13:48:06

我在想,如果全球定位系统数据的那一部分暴露在你面前,CoreLocation的东西就能做到这一点。不过,这让我想到。

我唯一的(牵强的)建议是把一些东西放到背景处理中--这必须是出于一小部分特定的原因之一,例如跟踪背景中的位置。作为副作用,试着在一个常规计时器上检测时钟的变化。苹果可能会拒绝它,因为很明显,它不使用位置信息,它只是一个利用背景处理的理由。

任何不涉及网络的解决方案都很难实现,我想知道你为什么不使用它。

票数 1
EN

Stack Overflow用户

发布于 2011-08-19 14:22:51

虽然我认为无法可靠地确定用户是否在没有网络访问的情况下手动将时钟向前转,但您当然可以可靠地确定他们是否返回了时间。由于我们知道这在物理上是不可能的,因此可以假定他们操纵了他们的时钟来作弊。

我的意思是,这不是通常的过程,触发一些动作在应用程序中,需要等待一段时间,退出应用程序,并把时钟向前,重新启动应用程序,以获得他们所等待的东西,然后重新调整时钟回到实际时间?

如果确实如此,那么根据@smgambel的建议,您可以在每次发射时存储物理时间和当前时区,并与以前存储的时间和时区进行比较。如果时间是后面的之前存储的时间,并且设备的时区没有改变,那么您可以安全地假设用户已经操纵了时钟。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7122216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档