2010-07-30 61 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我的英语不好