7

До iOS 9 мы пишем local notifications как этотКак установить частоту повторения в оповещении пользователя

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

и в местном уведомлении мы repeatInterval, сейчас в WWDC2016 Apple, объявила User Notification, которая содержит

  • UNTimeIntervalNotificationTrigger.
  • UNCalendarNotificationTrigger.

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

приведенный выше код будет вызывать уведомление после каждой минуты. Но не может установить дату.

NSDateComponents* date = [[NSDateComponents alloc] init]; 
date.hour = 8; 
date.minute = 30; 

UNCalendarNotificationTrigger* triggerC = [UNCalendarNotificationTrigger triggerWithDateMatchingComponents:date repeats:YES]; 

код, указанный выше, может быть установлен, и повтор запускается завтра в 8:30 не после минуты.

В iOS 10 User Notification как я могу установить дату с частотой повторения так же, как мы можем установить в UILocalNotification?

Я хочу запланировать User Notification завтра в 8:30 вечера и повторять через каждую минуту так же, как код, я указал на вершине относительно local notification

+0

Привет всем, у меня есть один и тот же вопрос. Пожалуйста, сообщите нам, если кто-то еще реализовал эту функциональность? ** FYI: ** Вопрос: «Как установить периодические интервалы, как каждый день, каждый месяц, каждую минуту и ​​т. Д. Для локальных уведомлений в ** iOS 10 **». Я жду. Благодарю. –

+1

Нашли решение этой проблемы? –

+0

Также очень связано: [UserNotification через 3 дня, а затем повторяется каждый день/час - iOS 10] (http://stackoverflow.com/q/38380783/2415822) – JAL

ответ

0

Для прошивкой 10 вы можете использовать, как это:

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

имеет тот же эффект от кода iOS 9. Чтобы повторить, вам просто нужно использовать компоненты, которые вы хотите повторить.

1

вдохновлен @Ramon Васконселос, я использую следующий код для установки интервалов и fireDate вместе

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