Проблемы с повторным интервалом каждые 30 минут - PullRequest
6 голосов
/ 06 февраля 2012

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

UILocalNotification *reminderNote = [[UILocalNotification alloc]init];
reminderNote.fireDate = [NSDate dateWithTimeIntervalSinceNow:60 * 30];
reminderNote.repeatInterval = NSHourCalendarUnit;
reminderNote.alertBody = @"some text";
reminderNote.alertAction = @"View";
reminderNote.soundName = @"sound.aif";
[[UIApplication sharedApplication] scheduleLocalNotification:reminderNote];

1 Ответ

13 голосов
/ 07 февраля 2012

firedate устанавливает время первого срабатывания уведомления, а repeatInterval - интервал между повторениями уведомления.Таким образом, код в вопросе планирует запуск уведомления через 30 минут (60 * 30 секунд) с последующим повторением каждый час.

К сожалению, вы можете запланировать повторение уведомлений только с точными интервалами, определенными NSCalendar константы : например, каждую минуту, каждый час, каждый день, каждый месяц, но не кратно этим интервалам.

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

UILocalNotification *reminderNote = [[UILocalNotification alloc]init];
reminderNote.fireDate = [NSDate dateWithTimeIntervalSinceNow:60 * 30];
reminderNote.repeatInterval = NSHourCalendarUnit;
reminderNote.alertBody = @"some text";
reminderNote.alertAction = @"View";
reminderNote.soundName = @"sound.aif";
[[UIApplication sharedApplication] scheduleLocalNotification:reminderNote];

reminderNote.fireDate = [NSDate dateWithTimeIntervalSinceNow:60 * 60];
[[UIApplication sharedApplication] scheduleLocalNotification:reminderNote];
...