Ian Kohlert
Ian Kohlert

Reputation: 514

iOS 10 How to view a list of pending notifications using UNUserNotificationCenter?

Solution Code:

let center = UNUserNotificationCenter.current()
print(center.getPendingNotificationRequests(completionHandler: { error in
        // error handling here
    }))

My original post:

I am trying to get a list of pending notifications via UNUserNotificationCenter as UIApplication.shared.scheduledLocalNotifications was depreciated.

This is the code I'm using:

let center = UNUserNotificationCenter.current()
    print(UNUserNotificationCenter.getPendingNotificationRequests(center))

However this prints "(Function)". getPendingNotificationRequests requires a UNUserNotificationCenter parameter and I can't think of what else it could be.

Thanks

Upvotes: 22

Views: 18453

Answers (4)

praveen
praveen

Reputation: 246

For ObjC:- [[UNUserNotificationCenter currentNotificationCenter] getPendingNotificationRequestsWithCompletionHandler:^(NSArray<UNNotificationRequest*> *requests){ NSLog(@"requests: %@", requests); }];

Upvotes: -1

algrid
algrid

Reputation: 5954

Just in case anyone needs to access notifications that are already delivered (user can see them in notification center), this can be done in the following way:

    let center = UNUserNotificationCenter.current()
    center.getDeliveredNotifications { notifications in
            // use center.removeDeliveredNotifications(withIdentifiers:requestIdsToRemove)
            // if you want to cancel some of the notifications displayed to user
        }
    }

Upvotes: 4

Колхозник
Колхозник

Reputation: 9

it's not actually now, but you should allow to use notifications

UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound, .badge]) { (granted, error) in
        if !granted {
            print("user has declined notifications")
        }
    }

Upvotes: 0

Jerry
Jerry

Reputation: 4480

The getPendingNotificationRequests call passes an array of requests to the completion closure. Try something like this:

let center = UNUserNotificationCenter.current()
center.getPendingNotificationRequests(completionHandler: { requests in
    for request in requests {
        print(request)
    }
})

Upvotes: 47

Related Questions