我可以知道ipad是否重启了吗?

时间:2013-09-09 19:14:47

标签: iphone ios objective-c ipad clock

我正在开发一个必须在线和离线工作的应用程序。此应用程序应与我们的服务器同步信息。为此,我们需要设备使用服务器时钟。 我发现了很多信息,我得到了以下想法:

  1. 当用户登录时,我将强制他获取服务器时钟时间。在这一刻,他必须有互联网连接,所以没关系。
  2. 当我得到时钟服务器时间时,我得到systemUptime信息,说明设备开启的时间间隔,然后我存储它。我可以这样得到systemUptime:

    [NSProcessInfo processInfo].systemUptime
    
  3. 当用户创建新的本地文件时,我会根据systemUptime函数知道当前的间隔,所以我知道当前时间,而且我不依赖iOS系统时钟。

    < / LI>

    问题是:每次重启或关闭设备时,都会重置systemUptime。直到这里好,我可以解决它,迫使用户再次登录,并再次获得服务器时钟时间。我的问题是知道设备何时重启。你能帮助我吗?谢谢你们!

2 个答案:

答案 0 :(得分:1)

我的建议是根本不参考设备时间。从服务器获取文件,让服务器也回答检索文件的服务器时间。您可以将其存储在文件中,文件名中,也可以单独存储在设备上。

在将来的某个时刻询问服务器是否有比您之前记录的服务器时间更新的文件。

从这个意义上说,时间本身并不是真正的时间,它是一个版本号,您也可以使用服务器显式,只使用服务器中的一个整数来表示版本的进展顺序。

如果您的应用以这种方式变得强大是重要的,那么您唯一的选择就是保持独立于设备时间。否则,它有太多方法可以中断(包括由于时间检查的延迟,或设备出厂重置或用户的恶意操作导致的小时间错误)。如果可以,最好保持独立于设备时间。

答案 1 :(得分:0)

第一次获得systemUptime时,从当前(iOS)日期和时间中减去它。这是系统上次提出的时间。

然后在必要时重新计算此值。如果“系统上次启动的时间”已经改变,那么您就知道是时候再次登录了。

然而,正如另一位评论者所说,我怀疑有更好的方法可以从头开始解决这个问题。