Как временно отключить все локальные уведомления, когда пользователь отключает его с помощью UISwitch?

Я хочу использовать UISwich на странице настроек, если пользователь отключит его, он временно отключит все локальные уведомления.

В swift application.registerUserNotificationSettings(UIUserNotificationSettings(forTypes: [.Alert, .Badge, .Sound], categories: nil)) для регистрации локальных уведомлений.

Есть ли функция, которую я могу отменить регистрацию локальных уведомлений, точно так же, как пользователь переводит определенное уведомление со страницы настроек в iOS?

Первый метод

  1. Когда пользователь изменяет значение переключателя, вы можете сохранить его статус в NSUserDefaults.

  2. При получении уведомления либо через application(_:didReceiveLocalNotification:) либо application:didReceiveRemoteNotification: выполните проверку упомянутого выше изменения состояния, и если пользователь отключил уведомления, просто игнорируйте их.

Второй метод

Использовать unregisterForRemoteNotifications ()

Этот метод следует использовать только в редких случаях, например, когда новая версия приложения удаляет поддержку всех типов удаленных уведомлений. Пользователи могут временно запретить приложениям получать удаленные уведомления через раздел «Уведомления» в приложении «Настройки». Приложения, незарегистрированные с помощью этого метода, всегда могут перерегистрироваться.

Третий метод

При использовании удаленных уведомлений у вас будет код на стороне сервера, который выталкивает их в APNS. В таких случаях, когда пользователь хочет остановить уведомления, вы можете установить сервер сервера флагов, чтобы он больше не отправлял их в APNS.

Убедитесь, что вы импортируете UIKit и UserNotifications. Следующий код находится в swift 3

 func removeLocalNotifications() { if #available(iOS 10.0, *) { UNUserNotificationCenter.current().getPendingNotificationRequests(completionHandler: {requests -> () in print("\(requests.count) requests -------") for request in requests{ let notifIdentifier: String = request.identifier as String print("notifIdentifier deleted: \(notifIdentifier)") UNUserNotificationCenter.current().removePendingNotificationRequests(withIdentifiers: [notifIdentifier]) } }) UNUserNotificationCenter.current().getDeliveredNotifications(completionHandler: {deliveredNotifications -> () in print("\(deliveredNotifications.count) Delivered notifications-------") for notification in deliveredNotifications{ let notifIdentifier: String = notification.request.identifier as String print("notifIdentifier deleted: \(notifIdentifier)") UNUserNotificationCenter.current().removeDeliveredNotifications(withIdentifiers: [notifIdentifier]) } }) } else { ///for iOS < 10 let app: UIApplication = UIApplication.shared for oneEvent in app.scheduledLocalNotifications! { print("oneEvent Deleted ======================= \(oneEvent)") let notification = oneEvent as UILocalNotification app.cancelLocalNotification(notification) } } } 
  • Swift 2 сохраните несколько изображений в Parse
  • Ошибка UIActivityViewController после перехода на Swift 2
  • Tableview не отображает данные в swift 2
  • Функция Firebase (url: ") не работает
  • Как добавить контроллер панели вкладок вместо защищенной страницы в Xcode
  • Непустой массив, доступ к первому элементу: индекс за пределами диапазона (Swift 2.0)
  • Могут ли функции храниться как поля? Это хороший подход для обратных вызовов?
  • parse 1.11 PFACL не имеет члена setPublicReadAccess
  • «Перемещение переменной в состоянии требует инициализатора« Ошибка в Swift 2.0
  • CLPeripheralManager.startAdvertising не принимает возвращаемое значение CLBeaconRegion.peripheralDataWithMeasuredPower
  • Как создать RefreshControl в нижней части TableView Swift 2+
  • Давайте будем гением компьютера.