我想删除我的应用从iOS 5通知中心发出的旧通知。我可以这样做吗?如果是这样,怎么样?
答案 0 :(得分:75)
要从通知中心删除通知,只需将图标徽章编号设置为零。
[[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];
这仅在数字更改时有效,因此如果您的应用不使用您必须先设置的徽章编号,请重置它。
[[UIApplication sharedApplication] setApplicationIconBadgeNumber:1];
[[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];
答案 1 :(得分:19)
我使用的一种更简单的方法(并且不需要徽章)是将计划的本地通知数组重置为自身,如下所示:
UIApplication* application = [UIApplication sharedApplication];
NSArray* scheduledNotifications = [NSArray arrayWithArray:application.scheduledLocalNotifications];
application.scheduledLocalNotifications = scheduledNotifications;
这会导致任何预定通知仍然有效,同时删除通知中心中存在的所有“旧”通知。但是,它在iOS的未来版本中也会有一些可能会改变的感觉,因为我没有看到任何关于此行为的文档。
当然,如果您要删除所有通知,则只需以下内容:
[[UIApplication sharedApplication] cancelAllLocalNotifications];
答案 2 :(得分:3)
是的,您可以通过致电
取消特定或所有本地通知[[UIApplication sharedApplication] cancelLocalNotification:...];
或
[[UIApplication sharedApplication] cancelAllLocalNotifications];
答案 3 :(得分:2)
如果您想在swift和iOS 10.0中清除通知
import UserNotifications
if #available(iOS 10.0, *) {
let center = UNUserNotificationCenter.current()
center.removeAllPendingNotificationRequests() // To remove all pending notifications which are not delivered yet but scheduled.
center.removeAllDeliveredNotifications() // To remove all delivered notifications
}
答案 4 :(得分:1)
对我而言,它仅适用于发送仅包含以下徽章的本地通知:
if([UIApplication sharedApplication].applicationIconBadgeNumber == 0) {
UILocalNotification *singleLocalPush = [[UILocalNotification alloc] init];
singleLocalPush.fireDate = [NSDate dateWithTimeIntervalSinceNow:1];
singleLocalPush.hasAction = NO;
singleLocalPush.applicationIconBadgeNumber = 1;
[[UIApplication sharedApplication] scheduleLocalNotification:singleLocalPush];
[singleLocalPush release];
} else {
[[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];
}
在方法中
-(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
我可以再次将徽章设置为0。