iOS 10 Как просмотреть список ожидающих уведомлений с помощью UNUserNotificationCenter?

Код решения:

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

Мой оригинальный пост:

Я пытаюсь получить список ожидающих уведомлений через UNUserNotificationCenter, поскольку UIApplication.shared.scheduledLocalNotifications устарел.

Это код, который я использую:

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

Однако это печатает «(Функция)». getPendingNotificationRequests требует параметр UNUserNotificationCenter, и я не могу придумать, что еще это может быть.

Спасибо


person aestusLabs    schedule 26.10.2016    source источник
comment
Вызовите эту функцию для center, а не для класса, и предоставьте обработчик обратного вызова developer.apple .com/reference/usernotifications/   -  person Paulw11    schedule 26.10.2016
comment
Можете ли вы отметить мой ответ как принятый?   -  person Jerry    schedule 27.01.2020
comment
Сначала убедитесь, что у вас есть авторизация, затем вы можете запланировать уведомление.   -  person Idan Moshe    schedule 05.10.2020


Ответы (4)


Вызов getPendingNotificationRequests передает массив запросов на закрытие завершения. Попробуйте что-то вроде этого:

let center = UNUserNotificationCenter.current()
center.getPendingNotificationRequests(completionHandler: { requests in
    for request in requests {
        print(request)
    }
})
person Jerry    schedule 29.10.2016
comment
Это всегда дает мне 0 в ios 13.. Я использую устройство, а не эмулятор.. есть идеи по этому поводу? - person Abhishek; 19.11.2019
comment
@Abhishek Вы уверены, что они запланированы правильно? Уведомления нормально отображаются? - person aestusLabs; 25.01.2020
comment
Уведомления планируются правильно. Но получение запросов считается как 0. - person Abhishek; 27.01.2020
comment
@Abhishek У меня такая же проблема. Вы уже разобрались? - person lajosdeme; 26.06.2020
comment
Как напечатать заголовок? это просто показывает отредактировано для всех из них - person Curtis; 16.01.2021
comment
Убедитесь, что ваше приложение запросило разрешение на отправку уведомлений, и вы приняли его. Это может быть причиной того, что некоторые из вас видят 0. - person Kqtr; 18.01.2021

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

    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
        }
    }
person algrid    schedule 06.10.2020

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

UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound, .badge]) { (granted, error) in
        if !granted {
            print("user has declined notifications")
        }
    }
person Колхозник    schedule 03.03.2020

Для ObjC: - [[UNUserNotificationCenter currentNotificationCenter] getPendingNotificationRequestsWithCompletionHandler: ^(NSArray‹UNNotificationRequest*› *requests){ NSLog(@requests: %@, запросы); }];

person praveen    schedule 21.03.2021