7

Bis iOS 9 setzen schreiben wir local notifications wie dieseWie Wiederholfrequenz in Benutzerbenachrichtigung

UILocalNotification* localNotification = [[UILocalNotification alloc] init]; 
localNotification.fireDate = pickerDate; 
localNotification.alertBody = self.textField.text; 
localNotification.timeZone = [NSTimeZone defaultTimeZone]; 
localNotification.repeatInterval = NSCalendarUnitMinute; 
localNotification.applicationIconBadgeNumber = [[UIApplication sharedApplication] applicationIconBadgeNumber] + 1; 
[[UIApplication sharedApplication] scheduleLocalNotification:localNotification]; 

und in lokalen Benachrichtigung wir repeatInterval haben, jetzt in WWDC2016 kündigte Apple User Notification die

  • UNTimeIntervalNotificationTrigger enthält.
  • UNCalendarNotificationTrigger.

    UNTimeIntervalNotificationTrigger* trigger = [UNTimeIntervalNotificationTrigger triggerWithTimeInterval:60 repeats:YES]; 
    

die obige Code Meldung nach jeder Minute auslösen. Aber kann das Datum nicht einstellen.

Der Code über dem Datum kann eingestellt werden und wiederholen wird morgen um 8:30 nicht nicht nach der Minute auslösen.

In iOS 10 User Notification Wie kann ich Datum Zeit mit Wiederholungsfrequenz wie wir können in UILocalNotification einstellen?

Ich möchte User Notification morgen um 08.30 Uhr planen und kurz nach jeder Minute zu wiederholen halten wie der Code, den ich an der Spitze in Bezug auf spezifizierte local notification

+0

Hallo zusammen, ich habe die gleiche Frage. Bitte lassen Sie uns wissen, wenn jemand diese Funktionalität bereits implementiert hat? ** FYI: ** Die Frage ist "Wie wiederhole ich Intervalle wie jeden Tag, jeden Monat, jede Minute usw. für die lokalen Benachrichtigungen in ** iOS 10 **". Ich warte. Vielen Dank. –

+1

Haben Sie eine Lösung für das obige Problem gefunden? –

+0

Auch sehr verwandt: [UserNotification in 3 Tagen dann jeden Tag/Stunde wiederholen - iOS 10] (http://stackoverflow.com/q/38380783/2415822) – JAL

Antwort

0

Für iOS 10 Sie wie folgt verwenden können:

NSDateComponents *components = [[NSCalendar currentCalendar] components:NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond fromDate:fireDate]; 
UNCalendarNotificationTrigger* trigger = [UNCalendarNotificationTrigger triggerWithDateMatchingComponents:components repeats:YES]; 

es hat den gleichen Effekt aus dem iOS 9-Code. Um sie zu wiederholen, müssen Sie nur die Komponenten verwenden, die Sie wiederholen möchten.

1

von @Ramon Vasconcelos inspiriert, ich bin für die Einrichtung Intervalle und fireDate zusammen mit dem folgenden Code

switch (interval) { 
    case NSCalendarUnitMinute: { 
     unitFlags = NSCalendarUnitSecond; 
     break; 
    } 
    case NSCalendarUnitHour: { 
     unitFlags = NSCalendarUnitMinute | NSCalendarUnitSecond; 
     break; 
    } 
    case NSCalendarUnitDay: { 
     unitFlags = NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond; 
     break; 
    } 
    case NSCalendarUnitWeekOfYear: { 
     unitFlags = NSCalendarUnitWeekday | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond; 
     break; 
    } 
    case NSCalendarUnitMonth:{ 
     unitFlags = NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond; 
    } 
    case NSCalendarUnitYear:{ 
     unitFlags = NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond; 
    } 
    default: 
     unitFlags = NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond; 
     break; 
} 
NSDateComponents *components = [[NSCalendar currentCalendar] components:unitFlags fromDate:fireDate]; 
UNCalendarNotificationTrigger *trigger = [UNCalendarNotificationTrigger triggerWithDateMatchingComponents:components repeats:interval != 0];