iOS时间更改通知和上一个时间



我有一个应用程序,工作与超时(让我们说->环在3天)。如果用户脱机时更改设备本地时间,则会出现问题,因为我比较两个NSDate(最终日期和今天)以检查该超时。

所以我试图得到通知一个用户做了显著的时间变化(几个小时或几天)为了更新我的计时器取决于之前和之后更新

我找到了UIApplicationSignificantTimeChangeNotification,它做:

当时间发生重大变化时发布,例如,更改到新的一天(午夜),运营商时间更新,以及更改到夏令时或从夏令时更改。

这几乎符合,但我不知道如何获得"旧"时间以获得差异。我也不能依赖web服务器,因为应用程序应该在离线模式下运行。

我终于找到了一种方法来解决我的问题,通过使用CPU时间(它总是不断增加,除了重新启动)。

应用程序第一次启动时,我得到Real time和CPU时间。

然后,当我需要检查时间是否更改时,我只需输入

实时首先,我添加到它(当前CPU时间 -首先的CPU时间)。

这给我正确的时间。

注意:注意使用真实的CPU时间,而不是计时器使用的时间,因为当设备进入睡眠状态时它会停止。

当应用程序进入后台时,应该存储设备的当前时间。当应用程序进入前台时,您应该获取设备的当前时间。现在测量这两个日期之间的差值。如果小于零,则表示用户设置了设备之前的日期,应该抛出超时错误。如果差值大于0,则应将当前时间与实际完成日期进行比较。

另一种间接的方法是启动设备的位置跟踪。即使应用程序进入后台,也要保持打开状态。当你的didUpdateLocation委托被system击中时,你会在参数中接收CLLocation对象。这个位置对象有currentTime详细信息。比较上次位置和当前位置的时间。如果是否定的,用户已经被时间唬住了。是时候采取行动了。

相关内容

  • 没有找到相关文章

最新更新