13

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

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

AFAIK,有两种理论方法可以实现这一目标:

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

问题是 iOS 中的任何 API 都不会公开此信息。

还有其他方法吗?

4

3 回答 3

2

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

于 2012-08-17T14:48:00.960 回答
1

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

于 2012-08-17T13:56:06.740 回答
0

您无法获取原始 GPS 数据,并且 CLLocation 的时间戳属性在locationManager:didUpdateLocations: 中设置为系统时钟

于 2017-01-06T14:52:21.580 回答