首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >仅在手动更改设备时才检测设备时间的变化

仅在手动更改设备时才检测设备时间的变化
EN

Stack Overflow用户
提问于 2013-07-03 00:06:25
回答 3查看 4.6K关注 0票数 2

问题:我知道applicationSignificantTimeChange检测手动时间变化的方法。但是方法文档说:

重大时间变化的例子包括午夜的到来,承运人对时间的更新,以及夏时制的改变。委托可以实现此方法以调整应用程序中显示时间或对时间更改敏感的任何对象。

因此,它不仅可以检测到人工时间的变化,还可以检测到午夜的到来。在我的应用程序中,这将造成一个问题,因为用户将看到一个alertbox:

你得改变时间。请恢复到实际时间。

即使他在午夜后恢复应用程序(或者可能是,他最小化了应用程序,然后就睡着了)。第二天,他醒来了,恢复了应用程序,出人意料地收到了时间更改通知)。

问:如何仅在人工更改时间而不是午夜到达时显示警报?

EN

回答 3

Stack Overflow用户

发布于 2015-03-12 10:56:11

只需使用NSSystemClockDidChangeNotification Apple链接

票数 1
EN

Stack Overflow用户

发布于 2015-06-02 23:27:44

我已经使用了一个变体的远程服务器时间检查已经有一年或几年了。它在iOS上运行得很好。

  1. 获取远程时间。
  2. 在时间检查类中,存储远程时间和设备时间之间的偏移量,并将其存储在一个简单的NSTimeInterval变量中。
  3. 现在,您可以在任何时候从您的时间检查类获得“实时”,因为它可以占用当前设备时间,只需添加存储的偏移量,您就可以拥有实时的、所有的时间。
  4. 无论何时应用程序背景,您将需要删除存储的偏移量,因为用户可以摆弄时间设置。
  5. 对于每个应用程序前台事件,您将不得不执行3。再次。再去找个遥远的时间。拒绝任何电话,以获得实时,直到你有这种抵消再次。在那些尚未获取实时时间的事件中,任何依赖于实时存在的调用都必须优雅地失败。
  6. 现在,您得到的偏移量应该/可以与上次得到的偏移量进行比较。决定一个门槛,比如15秒。如果偏移量上次超过该阈值,则用户可能手动更改时间。这对我来说是件很有用的事。当然,即使用户可以更改设备时间,我也会随时使用实时(大部分时间)。

Afaik,我总是使用UTC的时间戳,以避免任何地区的麻烦。

票数 1
EN

Stack Overflow用户

发布于 2015-03-12 11:34:17

总是最好用服务器时间来检查这些事情。

按照下面的步骤。

  1. 获取服务器时间并转换为当前区域设置。
  2. 使用当前区域设置检查移动时间。
  3. 如果它们不一样,这意味着用户更改了时间。

请告诉我这件事是否清楚。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17437725

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档