2016-12-28 28 views
0

我使用UNUsernotification爲iOS 10和Xcode中8 Beta 2的調度多個本地通知不工作

我寫了下面的代碼在iOS設備上本地通知:

-(void) localNotificationForiOS10:(NSDate *) _reminderDate{ 

     NSLog(@"_reminderDate %@",_reminderDate); 

     NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian]; 

     [calendar setTimeZone:[NSTimeZone localTimeZone]]; 


     NSDateComponents *components = [calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay|NSCalendarUnitHour|NSCalendarUnitMinute|NSCalendarUnitSecond|NSCalendarUnitTimeZone fromDate:_reminderDate]; 

     NSLog(@"NSDateComponents %@",components); 



     UNMutableNotificationContent *objNotificationContent = [[UNMutableNotificationContent alloc] init]; 
     objNotificationContent.title = [NSString localizedUserNotificationStringForKey:@"Event Name!" arguments:nil]; 
     objNotificationContent.body = [NSString localizedUserNotificationStringForKey:@"You have event reminder" 
                      arguments:nil]; 
     objNotificationContent.sound = [UNNotificationSound defaultSound]; 

     /// 4. update application icon badge number 
     objNotificationContent.badge = @([[UIApplication sharedApplication] applicationIconBadgeNumber] + 1); 


     UNCalendarNotificationTrigger *trigger = [UNCalendarNotificationTrigger triggerWithDateMatchingComponents:components repeats:NO]; 


     UNNotificationRequest *request = [UNNotificationRequest requestWithIdentifier:@"firedate" 
                       content:objNotificationContent trigger:trigger]; 


     /// 3. schedule localNotification 
     UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter]; 

     [center addNotificationRequest:request withCompletionHandler:^(NSError * _Nullable error) { 
      if (!error) { 
       NSLog(@"Local Notification succeeded"); 
      } 
      else { 
       NSLog(@"Local Notification failed"); 
      } 
     }]; 
    } 

我想要設置三個不同的或多個未來的日期,並希望在定義的日期提醒事件。 當我在同一天使用上述代碼3個不同時間時

例如, (2016-12-29 18:05,2016-12-29 18:10,2016-12-29 18:15)比只給最後一個給了通知。

我註冊位置通知AppDelegate文件。


 application.applicationIconBadgeNumber = 0; 
     if ([[[UIDevice currentDevice] systemVersion] floatValue] > 10.0f) { 
    #if XCODE_VERSION_GREATER_THAN_OR_EQUAL_TO_8 
      /// schedule localNotification, the delegate must be set before the application returns from applicationDidFinishLaunching:. 
      UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter]; 
      center.delegate = self; 
    #endif 
     } else { 
      UILocalNotification *localNotifacation = [self getLocalNotificationFromLaunchOptions:launchOptions]; 
      if (localNotifacation) { 
       NSString *title = localNotifacation.alertBody; 

       NSLog(@"Add Title %@",title); 
      } 
     } 

+0

你需要爲每個通知不同的請求標識,否則你只能看到最後一個通知。您正在使用requestWithIdentifier:@「firedate」,以便爲每個通知的每個請求標識符使用相同的字符串「啓動」。希望有所幫助! –

+0

好的,我會試試。 –

回答