Запланированные локальные уведомления отображаются при включении на период времени, когда отключено

У меня есть ежедневное запланированное уведомление в 20:30:01.

Когда уведомления отключены ВЫКЛ в приложении "Настройки" на неделю, уведомления не отображаются, что идеально.

Проблема заключается в том, что когда уведомления снова переключаются ВКЛ в приложении "Настройки" после этой недели, отображаются все уведомления за предыдущую неделю.

Мне было интересно, как заставить уведомления не «наращивать», так сказать.

Есть ли здесь строка кода, которую мне не хватает, чтобы «очистить их»?

ViewController.m:

- (void)viewDidLoad {
    [super viewDidLoad];

    UILocalNotification* localNotification = [[UILocalNotification alloc] init];

    NSCalendar *cal = [NSCalendar currentCalendar];
    NSDateComponents *comp = [cal components:(NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute) fromDate:[NSDate date]];
    comp.hour = 20; // 19 = 7PM  20=8pm
    comp.minute = 30; // 7:45 PM  8:30
    comp.second = 01; // 7:45:01 PM

    localNotification.fireDate = [cal dateFromComponents:comp];
    localNotification.alertBody = @"Local Notification in iOS8";
    localNotification.timeZone = [NSTimeZone defaultTimeZone];
    localNotification.repeatInterval = NSCalendarUnitDay;

    [[UIApplication sharedApplication] scheduleLocalNotification:localNotification];
}

*Это уведомления, которые отображаются, когда уведомления были ВЫКЛЮЧЕНЫ, как только я снова включаю уведомления ВКЛ:*

введите здесь описание изображения


person SRMR    schedule 30.04.2015    source источник
comment
Когда вы отключаете кнопку, вы очищаете уже запланированные уведомления?   -  person David 'mArm' Ansermot    schedule 30.04.2015


Ответы (1)


Когда вы отключаете уведомления, вы должны позвонить [[UIApplication sharedApplication] cancelAllLocalNotifications];

person David 'mArm' Ansermot    schedule 30.04.2015
comment
Ах! Так что добавьте эту одну строку, чтобы очистить уведомления. Быстрый вопрос, есть ли строка, которая мне нужна для отключения всех уведомлений? Или мне нужна эта строка только для очистки уведомлений? - person SRMR; 30.04.2015
comment
рекомендуется ставить ДО или ПОСЛЕ [[UIApplication sharedApplication] scheduleLocalNotification:localNotification];? - person SRMR; 01.05.2015
comment
Потому что прямо сейчас у меня это после этой строки, и я не получаю уведомление (и уведомления включены) - person SRMR; 01.05.2015
comment
И когда я помещаю его перед этой строкой, он делает то же самое (показывает уведомление при включении), что я написал вопрос для - person SRMR; 01.05.2015
comment
Это не там же, это в твоем оффкейсе. Вы должны выполнить if(switchIsOn) {регистрировать уведомление} else {отменить локальные уведомления} - person David 'mArm' Ansermot; 01.05.2015
comment
Ах. Не знал, что это другая часть. Как бы вы подошли к части switchIsOn? Это часть проблемы, которую я не понимаю, как узнать, включен ли переключатель или выключен - person SRMR; 02.05.2015
comment
И вы все еще делаете все это в ViewController или все это идет в AppDelegate? - person SRMR; 02.05.2015