在我的应用程序中,我想获得准确的日期和时间,基本上,在我的应用程序中,会有一个时间敏感部分,用户只有在特定时间之后才能启动。
但是,如果我从设备中获取日期和时间,用户可以轻松更改设备上的日期和时间,Settings > General > Time & Date
在这里更改它。
我也尝试过使用 GPS 位置时间戳,但没有成功,[CLLocation timeStamp]
也是给设备时间,
我已经搜索了所有据说使用的ios-ntp,但当用户没有互联网连接时则不是,
我参考了以下 StackOverflow 问题:
- iPhone 上的准确时间
- iPhone 的网络时间协议
- 有什么办法可以获取iPhone上防篡改的日期和时间吗?
- 从 iPhone 中的运营商检索当前时间
- iOS 应用程序基于时间的同步
但没有得到我想要的结果
还有其他方法可以获得准确/实际时间吗?
NOTE :ios必须将当前日期存储在某处,因为当我从设置中更改当前系统日期并再次设置为Settings > General > Time & Date > set automatically > ON
它将设置当前的准确日期,那么我们可以获得该日期吗?或者一些技巧?
例子 :
假设现在设备中的时间是2014-01-01 15:04:57 +0000
( 现在自动设置为ON在“设置”>“常规”>“时间和日期”>“自动设置”>“开启”中),
现在
用户设置set automatically > OFF
并将当前日期更改为2014-03-02 11:14:32 +0000
所以当我在应用程序中写时NSLog(@"cdate: %@",[NSDate date]);
它会打印
cdate: 2014-03-02 11:14:32 +0000
但我想要的是打印当前的实际值
日期是2014-01-01 15:04:57 +0000
你意识到你在问不可能的事吗?如果您需要获取时间并且没有网络连接,则唯一获取时间的地方就是设备。您要么信任设备时间,要么从 NTP 获取时间。没有其他选择。
你如何处理这个问题取决于你为什么需要时间。如果您的应用程序中存在绝对不能在特定日期之前启用的功能,我将从外部服务器获取时间,如果证明它是在所述日期之后,则在默认值中设置一个标志来表示您已验证日期和功能是允许的,因此此后您不需要网络连接。如果网络连接不存在,则您不会设置该标志,但可能会显示一条消息,表明您需要连接到互联网才能启用新功能。
如果这只是游戏的一部分,请使用设备时间并让他们根据需要作弊。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)