2010-07-30 57 views
18

我正在製作一個設置本地通知的應用程序。如何在iPhone中刪除本地通知

謝天謝地,我能夠設置本地通知,但我不知道如何刪除我的應用程序設置的通知。

XCode確實提供了刪除功能removeAllNotifications,但您無法刪除應用程序設置的特定通知。

非常感謝。

+2

檢查此:http://stackoverflow.com/questions/6340664/delete-a-particular-local-notification – user3835691 2014-07-16 02:31:10

回答

12
[[UIApplication sharedApplication] cancelLocalNotification:notification] 
70

你問的這個問題兩次,所以我回答就在它希望這兩個問題達成你:

取消所有本地通知與此代碼:

[[UIApplication sharedApplication] cancelAllLocalNotifications]; 

用此行代碼取消一個本地通知:

[[UIApplication sharedApplication] cancelLocalNotification:theNotification]; 

其中theNotification是一個UILocalNotification對象,因此爲了取消特定通知,您需要保留它的UILocalNotification


你可以在apple's documentation找到更多的東西。

+0

嗨托馬斯,你會在哪裏保存或獲取該通知對象? – 2012-04-28 05:21:00

+0

如果你不想取消所有的通知,你必須持有你可能想要在內存中取消的NSNotification。也許是一個擁有NSNotifications數組的適當類的屬性。 – winsmith 2012-04-30 15:03:38

+0

托馬斯,我已經通過序列化UILocalNotification對象找到了答案 – 2012-04-30 17:35:53

1

您可以通過下面的函數取消通知:[[UIApplication sharedApplication]cancelNotification:object Of your UILocalNotification]

+0

雖然這並沒有拿出圍繞它在應用程序圖標上的圓。有沒有辦法解決這個問題? – coolcool1994 2013-08-16 15:38:41

2

helloou,你看,在迅速您可以創建一個本地通知:

var notif = UILocalNotification() 
     notif.timeZone = NSTimeZone.defaultTimeZone() 

     let morningOfChristmasComponents = NSDateComponents() 
     morningOfChristmasComponents.year = 2016 
     morningOfChristmasComponents.month = 03 
     morningOfChristmasComponents.day = 30 
     morningOfChristmasComponents.hour = 15 
     morningOfChristmasComponents.minute = 59 
     morningOfChristmasComponents.second = 0 

     let morningOfChristmas = NSCalendar.currentCalendar().dateFromComponents(morningOfChristmasComponents)! 

     let formatter = NSDateFormatter() 
     formatter.dateStyle = NSDateFormatterStyle.LongStyle 
     formatter.timeStyle = .MediumStyle 

     let dateString = formatter.stringFromDate(morningOfChristmas) 

     notif.fireDate = morningOfChristmas 
     notif.alertBody = "alarma wolf" 
     notif.userInfo = ["identificador": "wolf"] 
     UIApplication.sharedApplication().scheduleLocalNotification(notif) 
     print("alarma fijada para \(dateString)") 

廁所的用戶信息是indeitifer到你本地通知,現在,如果你想刪除特定的地方notificaction請嘗試:

var uidtodelete = "wolf" 
     var app:UIApplication = UIApplication.sharedApplication() 
     for oneEvent in app.scheduledLocalNotifications! { 
      var notification = oneEvent as UILocalNotification 
      let userInfoCurrent = notification.userInfo! as! [String:AnyObject] 
      let uid = userInfoCurrent["identificador"]! as! String 
      if uid == uidtodelete { 
       //Cancelling local notification 
       app.cancelLocalNotification(notification) 
       break; 
      } 
     } 

看的方法,上面userInfoCurrent是你的本地的識別器通知和uitodelete是包含您要刪除locla通知的特定值的字符串...

AAAA ...如果你想刪除所有本地通知您可以使用

UIApplication.sharedApplication( ).cancelAllLocalNotifications()

OKI

我希望你成爲自己或別人這一信息..

再見,andforgive我的英語不好