在 iOS 中,我需要知道实际时间 (UTC),而不是设备的时间。换句话说,用户应该不可能篡改时间或日期。
任何需要网络连接的东西都不好(因此访问时间服务器不是一种选择)。
AFAIK,有两种理论方法可以实现这一目标:
- 使用 GPS 卫星信号的时间戳
- 从运营商处获取当前时间
问题是 iOS 中的任何 API 都不会公开此信息。
还有其他方法吗?
在 iOS 中,我需要知道实际时间 (UTC),而不是设备的时间。换句话说,用户应该不可能篡改时间或日期。
任何需要网络连接的东西都不好(因此访问时间服务器不是一种选择)。
AFAIK,有两种理论方法可以实现这一目标:
问题是 iOS 中的任何 API 都不会公开此信息。
还有其他方法吗?
您可能找到的大多数解决方案(包括从 CoreLocation 获取 GPS 数据以访问时间信息)都是有缺陷的,因为它们取决于实际设备来访问时间。您将需要连接到时间服务器(我建议检查 NTP 服务器)。我正在查看核心电话框架,但找不到任何可以提供网络时间的东西。您可能想要填写错误报告并请求苹果扩展其中一个类以包含时间。
您可以查看 NSTimeZone 中的 secondsFromGMTForDate: 和 secondsFromGMT。如果在设备时间更改时 GMT 偏移量增加/减少,这些提供了一种将时间戳更正为 GMT(并可能转换为 UTC)的方法。
您无法获取原始 GPS 数据,并且 CLLocation 的时间戳属性在locationManager:didUpdateLocations
: 中设置为系统时钟