Получать уведомление о изменении часового пояса в iOS

Может ли мое приложение получить уведомление, когда изменился часовой пояс устройства? Я хочу получить уведомление, когда мое приложение находится на переднем плане. NSTimezone не работает для меня, поскольку я должен постоянно проверять часовой пояс.

Ответ 1

UIApplicationDelegate имеет метод, называемый applicationSignificantTimeChange:, который вызывается при значительном изменении времени.

Примеры, перечисленные в документации:

Примеры значительных изменений времени включают прибытие полночь, обновление времени перевозчиком и переход на летнее время

Но я бы предположил, что изменения в часовом поясе считаются значительным изменением времени.

В документах также говорится, что если изменение времени происходит, когда ваше приложение находится в фоновом режиме, вы получите его, когда вы перейдете на передний план

Если ваше приложение в настоящее время приостановлено, это сообщение помещается в очередь до тех пор, пока ваше приложение не вернется на передний план, после чего оно будет доставлено.

Вы также можете прослушать UIApplicationSignificantTimeChangeNotification для публикации, чтобы получить ту же информацию в другом месте в вашем приложении.

Ответ 2

Просто послушай NSSystemTimeZoneDidChangeNotification.

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

И не забудьте отменить регистрацию, например, в методе dealloc.

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