Search code examples
iosswiftxcodensusernotification

How to cancel UserNotifications


How I can disable/cancel already setted notification?

Here is my schedule function.

func scheduleNotif(date: DateComponents, completion: @escaping (_ Success: Bool) -> ()) {

    let notif = UNMutableNotificationContent()

    notif.title = "Your quote for today is ready."
    notif.body = "Click here to open an app."

    let dateTrigger = UNCalendarNotificationTrigger(dateMatching: date, repeats: true)
    let request = UNNotificationRequest(identifier: "myNotif", content: notif, trigger: dateTrigger)

    UNUserNotificationCenter.current().add(request, withCompletionHandler: { error in

        if error != nil {
            print(error)
            completion(false)
        } else {
            completion(true)
        }
    })
}

Solution

  • For cancelling all pending notifications, you can use this:

    UNUserNotificationCenter.current().removeAllPendingNotificationRequests()
    

    For cancelling specific notifications,

    UNUserNotificationCenter.current().getPendingNotificationRequests { (notificationRequests) in
       var identifiers: [String] = []
       for notification:UNNotificationRequest in notificationRequests {
           if notification.identifier == "identifierCancel" {
              identifiers.append(notification.identifier)
           }
       }
       UNUserNotificationCenter.current().removePendingNotificationRequests(withIdentifiers: identifiers)
    }