是否有替代ios-ntp来获得原子/当前时间ios?

时间:2014-01-01 11:14:21

标签: ios iphone objective-c datetime

在我的应用程序中,我想获得准确的日期和时间,基本上,在我的应用程序中,将会有一个时间敏感部分,用户在一段时间后才能启动。

但是,如果我从设备中获取日期和时间,用户可以轻松更改设备上的日期和时间,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

1 个答案:

答案 0 :(得分:2)

你是否意识到你在问这个不可能的事情?如果您需要花时间并且没有网络连接,那么唯一可以获得时间的地方就是设备。要么您信任设备时间,要么从NTP获得时间。没有其他选择。

你如何处理这取决于你需要花时间的确切原因。如果你的应用程序中有一些功能绝对不能在特定日期之前启用,我会从外部服务器获得时间,如果证明是在上述日期之后,请在默认设置中设置一个标志,表示你已经验证允许使用日期和功能,因此您之后不需要网络连接。如果没有网络连接,则不设置标志,但可能会发出一条消息,说您需要连接到Internet以启用新功能。

如果它只是游戏的某个部分,请使用设备时间,让他们在需要时作弊。