【发布时间】:2013-04-27 12:36:06
【问题描述】:
我的应用程序可以在设备时区更改时收到任何通知吗?我想在我的应用程序处于前台时收到通知。 NSTimezone 对我不起作用,因为我必须不断检查时区。
【问题讨论】:
标签: iphone ios objective-c ipad ios5
我的应用程序可以在设备时区更改时收到任何通知吗?我想在我的应用程序处于前台时收到通知。 NSTimezone 对我不起作用,因为我必须不断检查时区。
【问题讨论】:
标签: iphone ios objective-c ipad ios5
UIApplicationDelegate 有一个名为 applicationSignificantTimeChange: 的方法,当时间发生重大变化时会调用该方法。
文档中列出的示例是:
重大时间变化的示例包括午夜的到来、运营商的时间更新以及夏令时的变化
但我认为时区变化算作重大的时间变化。
文档还说,如果在您的应用处于后台时发生时间变化,您将在您转到前台时得到它
如果您的应用程序当前处于挂起状态,则此消息将排队等待您的应用程序返回到前台,此时它会被传递。
您还可以收听UIApplicationSignificantTimeChangeNotification 的发布,以便在您应用的其他任何地方获取相同的信息。
【讨论】:
只要听
NSSystemTimeZoneDidChangeNotification.
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(timeZoneChanged) name: NSSystemTimeZoneDidChangeNotification object:nil];
记得取消注册,例如在 dealloc 方法中。
[[NSNotificationCenter defaultCenter] removeObserver:self name:NSSystemTimeZoneDidChangeNotification object:nil];
【讨论】:
timeZoneChanged here 在应用程序置于前台而不是在应用程序处于后台并且用户更改时区或移动到不同的时区。这是预期的行为吗?在 Android 上,即使应用程序在后台,此类广播也会发送到应用程序,但我意识到它们是两个不同的操作系统,具有非常不同的设计。