cancelAllLocalNotifications not working in iOS10

前端 未结 3 1782
逝去的感伤
逝去的感伤 2021-01-01 22:09

I want to remove all previous local notification from NotificationCenter when adding new notifications. But it is working in iOS9.0 and lower version but in iOS 10 it fires

相关标签:
3条回答
  • 2021-01-01 22:16

    For iOS 10, Objective C:

    UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
    [center removeAllDeliveredNotifications];
    [center removeAllPendingNotificationRequests];
    

    Swift 4:

    UNUserNotificationCenter.current().removeAllPendingNotificationRequests()
    

    If you want to list all notifications:

    func listPendingNotifications() {
    
        let notifCenter = UNUserNotificationCenter.current()
        notifCenter.getPendingNotificationRequests(completionHandler: { requests in
            for request in requests {
                print(request)
            }
        })
    }
    
    0 讨论(0)
  • 2021-01-01 22:29

    For iOS 10, Swift 3.0

    cancelAllLocalNotifications deprecated from iOS 10.

    @available(iOS, introduced: 4.0, deprecated: 10.0, message: "Use UserNotifications Framework's -[UNUserNotificationCenter removeAllPendingNotificationRequests]")
    open func cancelAllLocalNotifications()
    

    You will have to add this import statement,

    import UserNotifications
    

    Get notification center. And perform the operation like below

    let center = UNUserNotificationCenter.current()
    center.removeAllDeliveredNotifications() // To remove all delivered notifications
    center.removeAllPendingNotificationRequests() // To remove all pending notifications which are not delivered yet but scheduled.
    

    If you want to remove single or multiple specific notification, you can achieve it by below method.

    center.removeDeliveredNotifications(withIdentifiers: ["your notification identifier"])
    

    Hope it helps..!!

    0 讨论(0)
  • 2021-01-01 22:37

    For iOS 10, You can use this way for removing all of Local Notification. I have just tested, It's working.

        NSArray *arrayOfLocalNotifications = [[UIApplication sharedApplication] scheduledLocalNotifications] ;
        for (UILocalNotification *localNotification in arrayOfLocalNotifications) {
            [[UIApplication sharedApplication] cancelLocalNotification:localNotification] ;
        }
    
    0 讨论(0)
提交回复
热议问题