2016-05-14 2 views
0

ローカル通知を1日(24時間)の時間間隔で表示しようとしていますが、その時点で通知をキャンセルしたいと考えています。私は(今日)これを試しましたが、うまくいきませんでした。私の通知は、まだこれは私が通知を解除するためのやっていることです表示されている。ローカル通知をキャンセルして再スケジュールする(スウィフト)

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

あなたは、通知のuserInfoプロパティを使用することができます

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

おかげで、しかし、問題は、私が持っていないです非常に多くの通知私は毎日それを繰り返す1つの通知を持っているので、fireDateは単一の同じ日付ですので、あなたの解決策を使用しても間違っていれば私は正しく動作しません@Madhumitha –

+0

ローカル通知を取り消しませんカスタムサウンドとして連続して3〜4秒間演奏する。 –

4

このコードを試してみてください。

たとえば、あなたはこのようにそれをスケジュールした場合:

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 
    } 
    } 
} 
関連する問題