获取有关iOS时区变化的通知

我的应用程序可以在设备时区更改时收到通知吗? 我希望在我的应用程序是前台时收到通知。 NSTimezone对我不起作用,因为我必须不断检查时区。

UIApplicationDelegate有一个名为applicationSignificantTimeChange:的方法applicationSignificantTimeChange:当时间发生重大变化时会调用它。

文档中列出的示例包括:

重要时间变化的示例包括午夜的到来,运营商更新时间以及夏令时的变化

但我认为时区变化算是一个重要的时间变化。

文档还说,如果时间更改发生在您的应用程序在后台时,您将在前往前台时获得它

如果您的应用程序当前处于挂起状态,则此消息将排队,直到您的应用程序返回到前台,此时它将被传递。

您还可以监听要发布的UIApplicationSignificantTimeChangeNotification ,以便在应用中的任何其他位置获取相同的信息。

只需听听NSSystemTimeZoneDidChangeNotification

 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(timeZoneChanged) name: NSSystemTimeZoneDidChangeNotification object:nil]; 

并记住取消注册,例如在dealloc方法中。

 [[NSNotificationCenter defaultCenter] removeObserver:self name:NSSystemTimeZoneDidChangeNotification object:nil];