有没有办法确定在iOS的实际时间和date(而不是设备的时间)

在iOS中,我需要知道实际的时间(UTC),而不是设备的时间。 换句话说,用户不应该篡改时间或date。

任何需要networking连接的东西都不好(因此访问时间服务器不是一种select)。

AFAIK,有两个理论方法来实现这一点:

  • 使用GPS卫星信号的时间戳
  • 从运营商获取当前时间

问题是这些信息在iOS中没有被任何API公开。

有另一种方法吗?

您可能find的大多数解决scheme(包括从CoreLocation获取GPS数据以访问时间信息)都有缺陷,因为它们取决于实际设备访问时间。 你将需要连接到一个时间服务器(我会build议检查NTP服务器)。 我正在看核心电话框架,找不到任何可以提供networking时间的东西。 你可能想填写一个错误报告,并要求苹果扩展其中一个类来包含时间。

你可以看看secondsFromGMTForDate:和NSTimeZone中的secondsFromGMT。 如果GMT偏移量在设备更改时间增加/减less,这些提供了一种方法来更正您的时间戳到GMT(并可能转换为UTC)。

您无法到达locationManager:didUpdateLocations中的CLLocation的原始GPS数据和timestamp属性locationManager:didUpdateLocations :使用系统时钟