我正在制作一款设置本地通知的应用程序。
很幸运,我已经成功设置了本地通知,但我不知道如何删除由我的应用程序设置的通知。
XCode提供了通过removeAllNotifications
删除所有通知的功能,但无法删除应用程序设置的特定通知。
非常感谢。
我正在制作一款设置本地通知的应用程序。
很幸运,我已经成功设置了本地通知,但我不知道如何删除由我的应用程序设置的通知。
XCode提供了通过removeAllNotifications
删除所有通知的功能,但无法删除应用程序设置的特定通知。
非常感谢。
[[UIApplication sharedApplication] cancelAllLocalNotifications];
使用以下代码取消一个本地通知:
[[UIApplication sharedApplication] cancelLocalNotification:theNotification];
其中theNotification
是一个UILocalNotification
对象,因此要取消特定通知,您需要将其保存在UILocalNotification
中。
您可以在苹果文档中找到更多内容。
[[UIApplication sharedApplication] cancelLocalNotification:notification]
您好,看看 Swift 中如何创建本地通知:
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)")
loo userInfo是您本地通知的标识符。现在,如果您想要删除特定的本地通知,请尝试:
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是包含您要删除的特定本地通知键的字符串...
如果您想删除所有本地通知,可以使用
UIApplication.sharedApplication().cancelAllLocalNotifications()
好的,希望这些信息能为您或他人提供帮助。
再见,谅解我的糟糕英语。
您可以通过以下函数取消通知:[[UIApplication sharedApplication] cancelNotification:object of your UILocalNotification]
如果您正在使用自iOS 10.0起提供的用户通知框架,并且您提供的标识符为foo
:
UNUserNotificationCenter.current().removePendingNotificationRequests(withIdentifiers: "foo")
UNUserNotificationCenter.current().removeDeliveredNotifications(withIdentifiers: "foo")
或者在 Objective-C 中:
[[UNUserNotificationCenter currentNotificationCenter] removePendingNotificationRequestsWithIdentifiers:@[@"foo"]];
[[UNUserNotificationCenter currentNotificationCenter] removeDeliveredNotificationsWithIdentifiers:@[@"foo"]];