Доступ к запланированной дате объекта UNNotificationRequest

Я пытаюсь найти запланированную дату запуска объекта UNNotificationRequest.

Я получаю ожидающие запросы уведомлений, как это:

UNUserNotificationCenter.current().getPendingNotificationRequests { (notifications) in

        let pendingNotifications : [UNNotificationRequest] = notifications
    }

Затем я пытаюсь получить доступ к дате запуска каждого объекта UNNotificationRequest.

Я могу получить доступ к UNNotificationTrigger, как показано ниже, но не могу найти способ получить доступ к запланированной дате запуска уведомления.

let notification = pendingNotifications[indexOfNotification]
let trigger : [UNNotificationTrigger] = notification.trigger

Мне удалось получить доступ к дате некоторых уведомлений, как показано ниже:

let date = trigger.value(forKey: "date") as! Date

Это работает для уведомлений, запланированных с использованием UNUserNotificationCenter, но я получаю следующую ошибку при попытке получить доступ к дате уведомлений, запланированной до iOS 10.

Завершение работы приложения из-за необработанного исключения "NSUnknownKeyException", причина: "[ valueForUndefinedKey:]: этот класс не соответствует кодовому значению для контрольной даты".

Есть ли способ, который будет поддерживать как новые, так и старые уведомления.

Спасибо.

1 ответ

Решение

не может найти способ получить доступ к запланированной дате запуска уведомления.

Вы уже показали, что понимаете, как получить UNNotificationTrigger. Ну, UNNotificationTrigger - это абстрактный суперкласс. Вам нужно выяснить, что это за класс на самом деле, и привести его к этому классу. Тогда вы можете изучить его свойства.

Например:

  • Если это UNCalendarNotificationTrigger, то приведите его к UNCalendarNotificationTrigger. Теперь у него есть nextTriggerDate,

  • Если это UNTimeIntervalNotificationTrigger, то приведите его к UNTimeIntervalNotificationTrigger. Теперь у него есть nextTriggerDate,

Другие вопросы по тегам