【问题标题】:Is there a way to determine the actual time and date in iOS (not the time of the device)有没有办法确定iOS中的实际时间和日期(不是设备的时间)
【发布时间】:2012-08-13 22:17:37
【问题描述】:

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

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

AFAIK,有两种理论上的方法可以实现这一点:

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

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

还有其他方法吗?

【问题讨论】:

  • 只是出于好奇,为什么这个精确时间对您的项目如此重要?如果你不介意我问的话。
  • 时间登记。它应该是防篡改的。
  • 无论你找到什么选项,如果手机越狱了,那么所有的赌注都没有了。
  • @PhilippeLeybaert 你有解决方案吗?

标签: ios gps cellular-network


【解决方案1】:

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

【讨论】:

  • 该 API 仍使用设备的时钟(由用户设置)。它不提供确定实际 UTC 时间的方法。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

    • 试过这种技术。当设备进入飞行模式时,gps 会获取设备时间并将其转换为 GMT。它甚至不显示当地时间。它不显示实际时间。
    猜你喜欢
    • 2016-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-05
    • 1970-01-01
    • 2018-06-08
    • 1970-01-01
    相关资源
    最近更新 更多