7

Jusqu'à iOS 9 nous écrire local notifications comme çaComment régler la fréquence de répétition dans la notification d'utilisateur

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]; 

et dans la notification locale, nous avons repeatInterval, maintenant dans WWDC2016 Apple a annoncé User Notification qui contient

  • UNTimeIntervalNotificationTrigger.
  • UNCalendarNotificationTrigger.

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

le code ci-dessus déclencher une notification après chaque minute. Mais ne peut pas définir la date. Le code au-dessus de la date peut être réglé et la répétition se déclenchera demain à 8h30 et non pas après la minute.

Dans iOS 10 User Notification comment je peux définir l'heure de la date avec la fréquence de répétition comme nous pouvons définir dans UILocalNotification?

Je veux planifier User Notification demain à 20h30 et ne cesse de répéter après chaque minute comme le code que je spécifié en haut en ce qui concerne local notification

+0

Salut à tous, j'ai la même question. S'il vous plaît laissez-nous savoir si quelqu'un a déjà implémenté cette fonctionnalité? ** FYI: ** La question est "Comment définir des intervalles de répétition comme tous les jours, tous les mois, toutes les minutes etc pour les notifications locales dans ** iOS 10 **". J'attends. Merci. –

+1

Trouvé une solution pour le problème ci-dessus? –

+0

Aussi très lié: [UserNotification dans 3 jours, puis répéter tous les jours/heure - iOS 10] (http://stackoverflow.com/q/38380783/2415822) – JAL

Répondre

0

Pour iOS 10 vous pouvez utiliser comme ceci:

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

il a le même effet à partir du code iOS 9. Pour répéter, il suffit d'utiliser les composants que vous voulez répéter.

1

inspiré par @Ramon Vasconcelos, j'utilise le code suivant pour la mise en place des intervalles et fireDate ensemble

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];