2016-05-14 2 views
0

Я пытаюсь показать локальное уведомление с интервалом времени в 1 день (24 часа) и его рабочим штрафом, но теперь я хочу отменить уведомление за определенный день. Я попробовал (сегодня), но это, похоже, не сработало. Мое уведомление по-прежнему появляется это то, что я сделал для отмены уведомления:Отмена и повторное расписание локального уведомления (Swift)

let appNotification = appDelegate!.notification 

UIApplication.sharedApplication().cancelLocalNotification(appNotification) 

Это как я планирования уведомления в appDelegate:

//scheduling notification 

dateComp.year = 2015; 
dateComp.month = 01; 
dateComp.day = 20; 
dateComp.hour = 21; 
dateComp.minute = 05; 
dateComp.timeZone = NSTimeZone.systemTimeZone() 

notification.category = "FIRST_CATEGORY" 
notification.alertBody = "my daily notiification ?" 
notification.soundName = UILocalNotificationDefaultSoundName 
notification.fireDate = finalFireDate 
notification.repeatInterval = NSCalendarUnit.Day 

let dateNow = NSDate() 
let noticalendar = NSCalendar.currentCalendar() 
let hour = calendar.component(NSCalendarUnit.Hour, fromDate: dateNow) 
UIApplication.sharedApplication().scheduleLocalNotification(notification) 

Я не знаю, почему я не в состоянии отмените уведомление, что есть что-то, что отсутствует или что-то не так, пожалуйста, дайте мне знать.

ответ

7

Попробуйте этот код

var app:UIApplication = UIApplication.sharedApplication() 
for oneEvent in app.scheduledLocalNotifications! { 
    var notification = oneEvent as UILocalNotification 
    if notification.fireDate == "your date" { 
     //Cancelling local notification 
     app.cancelLocalNotification(notification) 
     break; 
    } 
} 
+0

спасибо за ответ :), но проблема у меня нет так много уведомлений у меня есть одно уведомление, которое повторяется каждый день, поэтому fireDate является одной и той же датой, поэтому использование вашего решения не будет работать исправлять меня, если я ошибаюсь @Madhumitha –

+0

Отмена локального уведомления, но не отменяет пользовательский звук как его игра непрерывно продолжается от 3 до 4 секунд. –

4

Вы можете использовать userInfo свойство уведомлении в.

Например, если вы планируете это так:

notificationID = 1 
notification.category = "FIRST_CATEGORY" 
// other settings... 
notification.userInfo = ["NotificationID": notificationID] 

Вы можете использовать userInfo, чтобы найти его:

let application = UIApplication.sharedApplication() 
let scheduledNotifications = application.scheduledLocalNotifications! 

for notification in scheduledNotifications { 
    if let nID = notification.userInfo?["NotificationID"] as? Int { 
    if nID == appDelegate!.notificationID { 
     application.cancelLocalNotification(notification) 
     break 
    } 
    } 
} 
Смежные вопросы