Могу ли я программно очищать уведомления моего приложения от Центра уведомлений iOS 5?

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

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

[[UIApplication sharedApplication] setApplicationIconBadgeNumber:0]; 

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

 [[UIApplication sharedApplication] setApplicationIconBadgeNumber:1]; [[UIApplication sharedApplication] setApplicationIconBadgeNumber:0]; 

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

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

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

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

  [[UIApplication sharedApplication] cancelAllLocalNotifications]; 

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

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

или

 [[UIApplication sharedApplication] cancelAllLocalNotifications]; 

Если вы хотите очистить уведомления в 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 } 

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

  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.

  • К ARC или не к ARC? Каковы плюсы и минусы?
  • ARC запрещает объекты Objective-C в структурах или объединениях, несмотря на маркировку файла -fno-objc-arc
  • Как включить iOS 5 Safari Reader на моем веб-сайте?
  • iOS 5: Интересно о UIAppearance
  • Хранение UIImage в базовых данных с новым флагом внешнего хранилища
  • Свойства IBOutlet не обновляются при использовании метода prepareForSegue
  • Свойство CSS3 webkit-overflow-scrolling: touch ERROR
  • NSArray слабых ссылок (__unsafe_unretained) для объектов под ARC
  • iOS 5 не позволяет сохранять загруженные данные в папке «Документы»?
  • Нет исключений stacktrace в консоли под Xcode 4.2 / iOS 5?
  • Как реализовать пользовательскую таблицу представления таблицы Заголовки и нижние колонтитулы с раскадровки
  • Давайте будем гением компьютера.