在我的应用程序中,我想获得准确的日期和时间,基本上,在我的应用程序中,将会有一个时间敏感部分,用户在一段时间后才能启动。
但是,如果我从设备中获取日期和时间,用户可以轻松更改设备上的日期和时间,Settings > General > Time & Date
在此处进行更改。
我也试过GPS位置时间戳,但没有运气,[CLLocation timeStamp]
也给设备时间,
我搜索了所有人说使用ios-ntp,但是当用户没有互联网连接时,
我参考了以下StackOverflow问题:
但没有得到我想要的结果,
还有其他方法可以获得准确/实际的时间吗?
注意: 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
答案 0 :(得分:2)
你是否意识到你在问这个不可能的事情?如果您需要花时间并且没有网络连接,那么唯一可以获得时间的地方就是设备。要么您信任设备时间,要么从NTP获得时间。没有其他选择。
你如何处理这取决于你需要花时间的确切原因。如果你的应用程序中有一些功能绝对不能在特定日期之前启用,我会从外部服务器获得时间,如果证明是在上述日期之后,请在默认设置中设置一个标志,表示你已经验证允许使用日期和功能,因此您之后不需要网络连接。如果没有网络连接,则不设置标志,但可能会发出一条消息,说您需要连接到Internet以启用新功能。
如果它只是游戏的某个部分,请使用设备时间,让他们在需要时作弊。