本地本地iOS时间黑客证明背景倒计时器

前端之家收集整理的这篇文章主要介绍了本地本地iOS时间黑客证明背景倒计时器前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想要一种创建本地iOS版时间防御背景倒数计时器的方式,例如计数游戏下一个奖励的时间.

对象说明:

本地
– 无互联网连接

原生的iOS
– 我想在(最好)Objective-C或Swift中找到一个解决方

时间证明
– 当用户向前/向后更改设备时间时,剩余时间保持不变

背景
关闭/重新开放友好

倒计时器
– 定时器,在开始之后,将提供一种检查剩余时间的方法

我想在我的iOS游戏中有一个基于时间的奖励系统,只要移动设备的时间就不容易被攻破.

最初,我以为这是不可能的,并保持使用[NSDate date]和savedDate,将它们进行比较,以便找到已用时间.最近,我遇到了一个使用这个功能的游戏:Crossy Road.这是一个Unity游戏,据我所知,但我怀疑在Unity程序中编译成iOS应用程序的某种常见功能在iOS上无法通过Objective-C或Swift访问.

他们提供了一个定时的奖励制度,每6个小时一次,根据我测试,改变设备时间并不是可以攻破的.它也工作没有互联网连接. (我不知道如果你没有连接,但是当我连接,断开连接,并尝试使用黑客,它没有工作).

解决方法

您可以使用当前系统正常运行时间(mach_absolute_time()).使用CACurrentMediaTime()可以方便地访问此功能,它可以在几秒钟内轻松返回.那么你可能需要设置一些间隔来检查这个值.这当然可以使用NSDate来完成,因为它不是由用户设置时钟向前触发的问题.当重新启动时,只需保存起始值并将其用作重新启动后的偏移量.

唯一的缺点是它不计算设备关机的时间,但是当没有人转动他们的手机时,这几天通常不是很大的事情.

要获得实际的定时器功能,只需在启动时保存该值,然后根据预计的结束值定期检查它,或许随着结束的增加,分辨率越来越高.

猜你在找的iOS相关文章