2015-06-03 4 views
0

При использовании repeatInteval уведомления продолжают толкают друг за другом независимо от того, установлен на минут/день/час и т.д.UILocalNotification repeatInterval продолжает подталкивать уведомления

Это было похоже на работу хорошо, пока я не тестировался каждые несколько секунд, в настоящее время Настройки выиграл Не возвращайся. Почему?

var dateComp:NSDateComponents = NSDateComponents() 
    dateComp.year = 2015; 
    dateComp.month = 06; 
    dateComp.day = 03; 
    dateComp.hour = 15; 
    dateComp.minute = 27; 
    dateComp.timeZone = NSTimeZone.systemTimeZone() 

    var calender:NSCalendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)! 
    var date:NSDate = calender.dateFromComponents(dateComp)! 

    var notification:UILocalNotification = UILocalNotification() 
    notification.category = "Daily" 
    notification.alertBody = "OK" 
    notification.fireDate = date 
    notification.repeatInterval = NSCalendarUnit.CalendarUnitDay 
    notification.soundName = UILocalNotificationDefaultSoundName 

    UIApplication.sharedApplication().scheduleLocalNotification(notification) 
+0

dateComp.year = 201; ??? – Andrea

+0

Ошибка Typo, изменил его обратно (и установил его на 2020), но не повезло. – JUSDEV

ответ

1

Если вы установите повторение уведомления с помощью CalendarUnitDay, он должен повторять каждый день в одно и то же время после первого пожара. Обратите внимание, что для удаления запланированного уведомления недостаточно для удаления приложения (по крайней мере, это было в iOS7), поскольку система сохраняет уведомление, зарегистрированное, но молчание в течение 24 часов, чтобы избежать случайной деинсталляции.
Возможно, вы все еще видите старые запланированные уведомления.
Обязательно установите контрольную точку и попросите делегата приложения указать его -scheduledNotifications, если найдете больше, чем вы ожидали, это источник ваших проблем.

+0

Спасибо, это объясняет, почему приложение отправляет уведомления сразу же после его переустановки. Как я могу спросить делегата о запланированных уведомлениях? (Извините, новичок в разработке iOS) – JUSDEV

+0

Приложение In (BO)): (UIApplication *) приложение didFinishLaunchingWithOptions: поместите точку останова и в отладчике напишите po UIApplication.sharedApplication(). ScheduleLocalNotifications() – Andrea

0

Если вы проверили каждые несколько секунд, это означает, что все уведомления запланированы и будут получены. Сначала попробуйте отменить все запланированные уведомления, а затем перепланировать по желаемому временному интервалу

UIApplication.sharedApplication().cancelAllLocalNotifications() 
+0

Спасибо! Но где я должен назвать метод? – JUSDEV

+0

В любом месте приложения, например, на viewDidLoad вашего rootController. Но как только вы его вызываете, удалите эту строку, иначе вы никогда не получите уведомления. –

+0

Если я отменил сразу после контроллера вида, он удалит все уведомления в центре уведомлений. Если я вызову метод после кода уведомления, он прекратит выполнение. Но все же я пытаюсь перейти от секунд до минут/ежедневно @zellb – JUSDEV

Смежные вопросы