多个UNUserNotifications不能触发

我正在设置多个UNUsernotifications如下,

- (void)viewDidLoad { [super viewDidLoad]; notifCount = 0; UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter]; [center requestAuthorizationWithOptions:(UNAuthorizationOptionBadge | UNAuthorizationOptionSound | UNAuthorizationOptionAlert) completionHandler:^(BOOL granted, NSError * _Nullable error) { if (!error) { NSLog(@"request succeeded!"); [self set10Notif]; } }]; } 

set10Notif方法中,我将当前时间设置为10秒的多个(8testing)通知。

 -(void) set10Notif { notifCount = notifCount+1; if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"10.0") && notifCount < 10) { // create actions NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian]; [calendar setTimeZone:[NSTimeZone localTimeZone]]; NSDate *fireD = [[NSDate date] dateByAddingTimeInterval:notifCount*10]; NSString *fireStr = [self returnStringFromDate:fireD withFormat:@"hh/mm/ss dd/MM/yyyy"]; NSDateComponents *components = [calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay|NSCalendarUnitHour|NSCalendarUnitMinute|NSCalendarUnitSecond|NSCalendarUnitTimeZone fromDate:fireD]; UNMutableNotificationContent *objNotificationContent = [[UNMutableNotificationContent alloc] init]; objNotificationContent.title = [NSString localizedUserNotificationStringForKey:@"Notif!" arguments:nil]; objNotificationContent.body = [NSString localizedUserNotificationStringForKey:fireStr arguments:nil]; objNotificationContent.sound = [UNNotificationSound defaultSound]; UNCalendarNotificationTrigger *trigger = [UNCalendarNotificationTrigger triggerWithDateMatchingComponents:components repeats:NO]; UNNotificationRequest *request = [UNNotificationRequest requestWithIdentifier:@"Prayer" content:objNotificationContent trigger:trigger]; UNUserNotificationCenter *userCenter = [UNUserNotificationCenter currentNotificationCenter]; [userCenter addNotificationRequest:request withCompletionHandler:^(NSError * _Nullable error) { if (!error) { NSLog(@"Local Notification succeeded"); } else { NSLog(@"Local Notification failed"); } [self set10Notif]; }]; #endif } } 

所有的本地通知设置。 但是只有一个通知在设备中被触发,这是最后一个。

为什么不能通知多个通知? 我做错了什么?

为每个通知提供一个不同的“requestWithIdentifier”和“time delay”,然后尝试,可能对您有用。

定制date和时间的多重防范火灾

 UNUserNotificationCenter *center=[UNUserNotificationCenter currentNotificationCenter]; [center requestAuthorizationWithOptions:( UNAuthorizationOptionSound | UNAuthorizationOptionAlert) completionHandler:^(BOOL granted, NSError * _Nullable error) { if (!error) { NSLog(@"request authorization succeeded!"); // [self showAlert]; } }]; UNMutableNotificationContent *objNotificationContent = [[UNMutableNotificationContent alloc] init]; objNotificationContent.title = [NSString localizedUserNotificationStringForKey:@"શ્રી હરિ જયંતિ!" arguments:nil]; objNotificationContent.body = [NSString localizedUserNotificationStringForKey:@"જય સ્વામિનારાયણ \nઆવતીકાલે એકાદશી છે!" arguments:nil]; objNotificationContent.sound = [UNNotificationSound defaultSound]; NSURL *fileURL = [[NSBundle mainBundle] URLForResource:@"nirnay" withExtension:@"jpg"]; NSError *error; UNNotificationAttachment *attachment = [UNNotificationAttachment attachmentWithIdentifier:@"nirnay" URL:fileURL options:nil error:&error]; objNotificationContent.attachments = @[attachment]; /// 4. update application icon badge number // objNotificationContent.badge = @([[UIApplication sharedApplication] applicationIconBadgeNumber] + 1); for (int i=0; i<5; i++) { int hours=11; int mint=46+i; NSString *myDateAsAStringValue=@"2017-03-22"; NSDateFormatter *dateFormatter=[[NSDateFormatter alloc] init]; [dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]]; [dateFormatter setDateFormat:@"yyyy-MM-dd"]; // or @"yyyy-MM-dd hh:mm:ss a" if you prefer the time with AM/PM NSDate *myDate = [dateFormatter dateFromString: myDateAsAStringValue]; NSDate *pickerDate = myDate; NSLog(@"pickerDate - %@",pickerDate); NSDateFormatter *dateFormatter2 = [[NSDateFormatter alloc]init]; // [dateFormatter setDateFormat:DT_FORMATE_BIRTHDATE]; [dateFormatter2 setDateFormat:@"yyyy-MM-dd HH:mm:ss Z"]; NSTimeZone *gmt = [NSTimeZone timeZoneWithAbbreviation:@"GMT"]; [dateFormatter2 setTimeZone:gmt]; NSCalendar *calendar = [NSCalendar autoupdatingCurrentCalendar]; NSDateComponents *timeComponents = [calendar components:(NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay |NSCalendarUnitHour | NSCalendarUnitMinute|NSCalendarUnitSecond) fromDate:pickerDate]; [timeComponents setHour:hours]; [timeComponents setMinute:mint]; [timeComponents setSecond:0]; NSDate *dtFinal = [calendar dateFromComponents:timeComponents]; NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss Z"]; NSString *fierDate = [formatter stringFromDate:dtFinal]; NSLog(@"fierDate - %@",fierDate); UNCalendarNotificationTrigger *trigger3 = [UNCalendarNotificationTrigger triggerWithDateMatchingComponents:timeComponents repeats:NO]; UNNotificationRequest *request3 = [UNNotificationRequest requestWithIdentifier:[NSString stringWithFormat:@"ten%d",i] content:objNotificationContent trigger:trigger3]; /// 3. schedule localNotification [center addNotificationRequest:request3 withCompletionHandler:^(NSError * _Nullable error) { if (!error) { NSLog(@"Local Notification succeeded By calender"); } else { NSLog(@"Local Notification failed"); } }]; }