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

     2023-03-12     127

关键词:

【中文标题】如何在应用程序运行之间本地检测用户的 iPhone 时钟提前?【英文标题】:How can I locally detect iPhone clock advancement by a user between app runs? 【发布时间】:2011-10-30 15:15:09 【问题描述】:

休闲游戏中的一个常见漏洞是人为地提前系统时钟以在游戏中跳跃。 iOS 设备上的应用如何检测到这样的用户时钟提前?

不得涉及网络通信 不得在时钟提前时假定应用处于打开状态(运行或暂停) 必须检测时钟提前,检测时钟回滚是不够的

理想情况下,该解决方案在重启时会很可靠,但这不是必需的。

【问题讨论】:

不要以为没有网络通信就可以做到。 GPS 接收器“可以”这样做,但我认为它不会暴露 API 中的任何时间信息。 【参考方案1】:

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/

【讨论】:

mach_absolute_time 在设备重启时重置。如果用户通过重新启动来规避作弊检测是可以的,但如果重新启动错误地将他们标记为已提前时钟,那就不行了。 另外,根据 Ben Dodson 的精彩博文 bendodson.com/weblog/2013/01/29/ca-current-media-time,如果设备在播放之间进入睡眠状态一段时间,这将不起作用,因为它显示为 CACurrentMediaTime(因此 mach_absolute_time 因为它是基于它?)只计算活动设备时间而不是正常运行时间。【参考方案2】:

我在考虑这样一个事实,如果这部分 GPS 数据暴露给您,CoreLocation 的东西可以做到这一点。然而,这让我开始思考。

我唯一(牵强)的建议是将某些东西放入后台处理 - 这必须是出于一小部分特定原因之一,例如在后台跟踪位置。作为其副作用,请尝试在常规计时器上检测时钟变化。 Apple 可能会拒绝它,因为很明显它没有使用位置信息,这只是利用后台处理的一个理由。

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

【讨论】:

【参考方案3】:

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

我的意思是,不是通常的过程来触发需要等待一段时间的应用内操作,退出应用程序并将时钟向前拨,重新启动应用程序以获得他们正在等待的任何东西然后将时钟重置回实际时间?

如果确实如此,那么根据@smgambel 的建议,您可以在每次启动时存储物理时间和当前时区,并与之前存储的时间和时区进行比较。如果时间晚于之前存储的时间,并且设备的时区没有改变,那么您可以放心地认为用户已经操纵了时钟。

【讨论】:

iPhone - 如何在运行时检测到设备正在运行我的应用程序的临时构建

】iPhone-如何在运行时检测到设备正在运行我的应用程序的临时构建【英文标题】:iPhone-HowcanIdetectadeviceisrunninganadhocbuildofmyappatruntime【发布时间】:2012-05-2210:14:53【问题描述】:与应用商店部署相比,我想在运行我的应用的临时... 查看详情

如何在运行 Flutter Web 应用程序的本地和本地 webview 之间进行通信?

】如何在运行FlutterWeb应用程序的本地和本地webview之间进行通信?【英文标题】:Howtocommunicatebetweennativeandnativewebviewrunningaflutter\'swebapp?【发布时间】:2020-07-0315:13:52【问题描述】:Android允许指定一个Javascript接口作为webview和Androi... 查看详情

iPhone 和 Core Data:如何在更新之间保留用户输入的数据?

...0-03-1102:44:17【问题描述】:考虑一个作为动物目录的iPhone应用程序。应用程序应该允许用户为每只动物添加自定义信息——比如评分(从1到5分),以及他们可以输入的关于动物的一些注释。但是,用户将无法修改 查看详情

如何检测用户是不是在 PHP 中的本地主机上?

...410:12:37【问题描述】:换句话说,我如何判断使用我的Web应用程序的人是否在它所在的服务器上?如果我没记错的话,PHPMyAdmin出于安全原因会这样做。【问题讨论】:【参考方案1】:$_SERVER["REM 查看详情

如何在iPhone中检测眼睛瞳孔并测量瞳孔之间的距离

】如何在iPhone中检测眼睛瞳孔并测量瞳孔之间的距离【英文标题】:HowtodetecteyepupilsandmeasuredistancebetweenpupilsiniPhone【发布时间】:2012-09-0102:32:06【问题描述】:我研究了很多关于面部检测的示例,并且我使用CIDetector和HaarCascade_eye... 查看详情

iPhone 模拟器 - 如何检测应用程序何时在模拟器上运行(因此可以设置测试数据)?

】iPhone模拟器-如何检测应用程序何时在模拟器上运行(因此可以设置测试数据)?【英文标题】:iPhonesimulator-howtodetectwhenappisrunningonsimulator(socansetuptestdata)?【发布时间】:2011-07-0413:49:28【问题描述】:在我的iPhone应用程序代码... 查看详情

如何检测我的 iPhone 应用程序正在 iPad 上运行

】如何检测我的iPhone应用程序正在iPad上运行【英文标题】:HowtodetectmyiPhoneappisbeingrunonaniPad【发布时间】:2010-12-1622:06:44【问题描述】:我有一个opengl应用程序,它在RetinaDisplay模式(双倍比例因子)下呈现更好,我注意到iPad模... 查看详情

如何检测位置已解决 iphone sdk

...sdk【发布时间】:2011-07-0713:53:23【问题描述】:我有一个应用程序可以获取用户位置并在地图上绘制折线。一开始,应用程序会在整个地方(gps试图获得准确位置的地方)画一条线。有什么方法可以判断位置是准确的,因此开始... 查看详情

在运行时本地化 iPad 应用程序

】在运行时本地化iPad应用程序【英文标题】:LocalizeiPadappatruntime【发布时间】:2012-02-0911:55:03【问题描述】:我正在开发一个需要在运行时进行本地化的应用程序,我的意思是它将是一个立即更改语言的按钮,我搜索了本地化... 查看详情

在 iOS 8 Beacon 中未检测到

...的应用获得用户本地化?是的,我重新启动了iPhone,我的应用程序允许获取用户位置。但是没用【参考方案1】: 查看详情

当 App 在后台模式下运行时,如何在 CoreBluetooth 中检测 iphone 通知信号?

】当App在后台模式下运行时,如何在CoreBluetooth中检测iphone通知信号?【英文标题】:HowcanIdetectiphonenotificationsignalinCoreBluetoothwhenApprunsonBackgroundmode?【发布时间】:2012-02-0701:34:28【问题描述】:我想在我的应用处于特定活动和后台... 查看详情

在 iPhone 上存储数据的最佳方式

...2011-06-1719:07:39【问题描述】:我正在为iPhone创建一个问答应用程序,允许用户回答显示的问题。目前我正在调用一个网络服务来存储用户的答案。但我有点担心如果Web服务出现故障怎么办。我需要在本地存储用户的答案,然后在... 查看详情

在 iPhone 上重新打开 Safari 时如何检测焦点?

...2012-07-2210:23:01【问题描述】:我有一个适用于iPhone的网络应用程序,我需要在网页处于焦点时触发Javascript函数,换句话说,当Safari打开时。我想要完成的是在用户单击电话链接并开始通话时以某种方式启动计时器。通话结束时... 查看详情

如何检测用户何时按下 iPhone 中的幻灯片关机按钮?

...果用户按下iPhone/iPad中的幻灯片关机按钮,我需要从我的应用程序向服务器发送警报消息。怎么做?一些帮助表示赞赏..【问题讨论】:【参考方案1】:你不能。它不是公共/文档化API 查看详情

如何检测iphone是不是还在?

...题描述】:我必须制作一个用户只能在iPhone静止时拍照的应用程序。你能告诉我如何进行吗?任何帮助将不胜感激。下面是我尝试过的代码,请提出改进​​建议,这段代码给出了生涩的输出_previousMotionValue=0.0f;memset(xQueue 查看详情

iPhone应用程序在后台运行时检测wifi网络

】iPhone应用程序在后台运行时检测wifi网络【英文标题】:iPhoneappdetectingwifinetworkwhilerunninginthebackground【发布时间】:2010-09-1412:42:22【问题描述】:有谁知道iPhone应用程序是否可以在后台运行时持续检测WiFi网络的存在?有什么限... 查看详情

应用程序关闭时如何在 EKEventStore 中检测?

】应用程序关闭时如何在EKEventStore中检测?【英文标题】:HowtodetectinEKEventStorewhentheappisclosed?【发布时间】:2014-01-3108:53:11【问题描述】:在我的应用程序中,当用户运行应用程序时,我第一次获取事件的EKEventStore并将它们本地... 查看详情

如何检测用户是不是采取了本地通知或远程通知的操作?

...?【发布时间】:2017-12-1506:20:58【问题描述】:我在我的应用程序中显示本地和远程通知。现在有一种情况,如果通知是本地的,那么我想采取不同的行动,或者如果通知是远程的,那么我 查看详情