我的应用程序中有这个方法来触发计划的本地通知:
- (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
以获取已安排的本地通知?
感谢
有两种方法
- 在appdelegate中实现以下方法
- (void(应用程序显著时间更改:(UIApplication*(应用程序
2.在通知中心中注册UIApplicationSignificantTimeChangeNotification
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleTimeChange:)]
;