Может ли мое приложение получить уведомление, когда изменился часовой пояс устройства? Я хочу получить уведомление, когда мое приложение находится на переднем плане. NSTimezone не работает для меня, поскольку я должен постоянно проверять часовой пояс.
Получать уведомление о изменении часового пояса в iOS
Ответ 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];