iOS – UILocalNotification为相同的通知激发了两次

如果我安排两个UILocalNotification并设置它们都在同一个fireDate上触发。 然后在设备上(这不是模拟器的bug)在fireDate application:didReceiveLocalNotification: didReceiveLocalNotification application:didReceiveLocalNotification:将会触发4次(每次通知2次)。 这是一个已知的错误? 因为我一直没有find任何有关它的信息。

请将错误报告给http://bugreport.apple.com

话虽如此,之前已经注意到,虽然在模拟器中存在错误,但在设备上似乎也存在错误。

查看关于这个SO问题的评论和回答: 本地通知“didReceiveLocalNotification”调用两次

试试这是在我的应用程序中的工作:

 -(IBAction)setRemind:(id)sender{ NSCalendar *calendar = [NSCalendar autoupdatingCurrentCalendar]; NSDateFormatter *dateFormatter2 = [[NSDateFormatter alloc] init]; [dateFormatter2 setDateFormat:@"YYYY-MM-dd HH:mm:ss"]; //Gets our picker NSDate *selectedTime = [datePicker date]; strDate2 = [dateFormatter2 stringFromDate:selectedTime]; NSDate *Date=[dateFormatter2 dateFromString:strDate2]; NSDateComponents *dateComponents = [calendar components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit ) fromDate:Date]; // Set up the fire time NSDateComponents *dateComp = [[NSDateComponents alloc] init]; [dateComp setDay:[dateComponents day]]; [dateComp setMonth:[dateComponents month]]; [dateComp setYear:[dateComponents year]]; [dateComp setHour:9]; [dateComp setMinute:00]; [dateComp setSecond:00]; [dateComp release]; NSDate *date = [calendar dateFromComponents:dateComp]; [self scheduleAlarmForDate:date message:txtDescri.text]; } -(IBAction)scheduleAlarmForDate:(NSDate*)date message:(NSString*)msg { //====== TO SEE OLD NOTIFI======= UIApplication *Ap = [UIApplication sharedApplication]; NSArray *arr = [Ap scheduledLocalNotifications]; NSLog(@"Old Notifications :>> %@",arr); UIApplication* app = [UIApplication sharedApplication]; UILocalNotification *alarm = [[UILocalNotification alloc] init]; // Create a new notification alarm.fireDate = date; NSLog(@"fireDate IS >> %@", alarm.fireDate); alarm.timeZone = [NSTimeZone localTimeZone]; alarm.alertBody = msg; NSLog(@"msg IS >> %@",msg); alarm.alertAction = @"Show"; alarm.repeatInterval = 0; alarm.soundName = UILocalNotificationDefaultSoundName; alarm.applicationIconBadgeNumber = 1; [app scheduleLocalNotification:alarm]; [alarm release]; } 

我希望这对你有帮助。