Могу ли я программно удалить уведомления моего приложения из Центра уведомлений iOS 5? - PullRequest
48 голосов
/ 15 октября 2011

Я хочу удалить старые уведомления, сделанные моим приложением, из Центра уведомлений iOS 5. Я могу это сделать? Если да, то как?

Ответы [ 5 ]

75 голосов
/ 19 октября 2011

Чтобы удалить уведомления из Центра уведомлений, просто установите номер значка значка на ноль.

[[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];

Это работает только при изменении номера, поэтому, если ваше приложение не использует номер значка, который вы должны сначала установить, затем сбросьте его.

[[UIApplication sharedApplication] setApplicationIconBadgeNumber:1];
[[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];
19 голосов
/ 15 февраля 2012

Более простой метод, который я использую (и не требующий значков), - сбросить массив запланированных локальных уведомлений на себя следующим образом:

  UIApplication* application = [UIApplication sharedApplication];
  NSArray* scheduledNotifications = [NSArray arrayWithArray:application.scheduledLocalNotifications];
  application.scheduledLocalNotifications = scheduledNotifications;

Это приводит к тому, что любые запланированные уведомленияостаются действительными, в то время как все «старые» уведомления, присутствующие в Центре уведомлений, удаляются.Тем не менее, он также может показаться, что он может измениться в будущем выпуске iOS, поскольку я не видел никакой документации по этому поведению.

Конечно, если вы хотите удалить all уведомлений, это просто следующее:

  [[UIApplication sharedApplication] cancelAllLocalNotifications];
3 голосов
/ 18 января 2012

Да, вы можете отменить определенные или все локальные уведомления, позвонив по номеру

[[UIApplication sharedApplication] cancelLocalNotification:...]; 

или

[[UIApplication sharedApplication] cancelAllLocalNotifications];
2 голосов
/ 11 января 2017

Если вы хотите очистить уведомления в 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
}
1 голос
/ 04 ноября 2011

Для меня это работало только с отправкой локального уведомления только с таким значком, как этот:

    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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...