У меня есть этот метод в моем приложении для запуска запланированных локальных уведомлений:
- (void)scheduleNotificationForTime:(long long)atTime
{
NSDate *fireDate = [DatesMngr getDateFromLongLong:atTime];
UILocalNotification *localNotif = [[UILocalNotification alloc] init];
if (localNotif == nil)
return;
localNotif.fireDate = fireDate;
localNotif.timeZone = [NSTimeZone localTimeZone];
localNotif.alertBody = @"Active Status";
localNotif.alertAction = @"View Details";
localNotif.applicationIconBadgeNumber = 1;
[[UIApplication sharedApplication] cancelAllLocalNotifications];
[[UIApplication sharedApplication] scheduleLocalNotification:localNotif];
}
Он отлично работает, если пользователь не меняет свой часовой пояс в настройках своего устройства, но уведомление не запускается, если он меняет часовой пояс после того, как он уже был запланирован, но еще не запущен. Я также пробовал с [NSTimeZone defaultTimeZone]
безуспешно. Есть ли способ обнаружить эти изменения часового пояса и обновить fireDate
для уже запланированных локальных уведомлений?
Спасибо