我目前正在开发一个跟踪时间的应用程序,我正面临一个问题。问题是,当我在测试设备(iphone 5c)上更改时区时,它确实会触发applicationSignificantTimeChange
方法。
但问题是我想知道时区改变的确切时间
(例如:timezone changed at 11h utc)。有没有一种方法可以知道,比如消息系统或我可以在我的应用程序上检索的东西?
我认为UIApplicationSignificantTimeChangeNotification
可以做到这一点,但我没有设法做到这一点,要么我没有得到它的权利,要么它是不可能与此通知。
欢迎任何帮助,谢谢
不幸的是,当事件实际发生时,您不能依赖接收消息applicationSignificantTimeChange:
。如果你的应用被挂起,它只会在返回前台时收到最后的通知。您可以在消息传递时创建NSDate
对象,但这将是应用程序意识到更改的时间,而不是在设备上发生实际更改的时间。
Apple的applicationSignificantTimeChange:
状态文档:
重大时间变化的例子包括午夜,由运营商更新的时间,并更改为夏令时。委托可以实现此方法来调整应用程序中显示时间或敏感的任何对象时间变化。
在调用这个方法之前,应用程序还会发布一个
UIApplicationSignificantTimeChangeNotification
通知给出感兴趣的对象有机会对更改作出响应。如果您的应用程序当前处于挂起状态,则此消息将排队等待App返回前台,此时它被交付。如果发生多个时间更改时,只交付最近的一个。
UIApplicationSignificantTimeChangeNotification
也没有帮助。object
属性是UIApplication
对象,没有提供userInfo
对象。