2

我正在安排这样的本地通知

+ (void) addLocalNotification: (Event *) event {
  UILocalNotification *localNotif = [[UILocalNotification alloc] init];
  localNotif.fireDate = event.scheduleTime;
  localNotif.alertBody = @"Time to apply drops\nPlease press view to see details";
  localNotif.soundName = ALARM_SOUND_FILE;
  localNotif.timeZone = [NSTimeZone localTimeZone];
  localNotif.applicationIconBadgeNumber = 1;
  NSDictionary * dict = [NSDictionary    dictionaryWithObjectsAndKeys:event.number,LN_EVENT_KEY,  ACTION_EVENT, LN_ACTION_KEY,  nil];
  localNotif.userInfo = dict;
  [[UIApplication sharedApplication] scheduleLocalNotification:localNotif];
}

然而,在上周末的时钟向前推进后,在时钟向前推进之前安排的通知会在一个小时后触发,即 19:00 而不是 18:00

苹果文档说要获得“挂钟”时间,如上所述设置时区。

欢迎任何建议。

4

1 回答 1

2

因此,我没有添加 24 小时的时间间隔,而是使用了 ..

+ (NSDate *) addOneDayToDate: (NSDate *) date {
   return [currentCalendar dateByAddingComponents:oneDay toDate:date options:0];
}

在哪里

 oneDay = [[NSDateComponents alloc] init];
 [oneDay setDay:1];
 currentCalendar = [NSCalendar currentCalendar];

这在大多数情况下都有效,除非日期介于午夜和时钟通常在凌晨 2:00 左右更改的时间之间。由于日期时间将在此之后,因此不需要逻辑。

于 2013-04-05T15:17:54.713 回答