Доступ к запланированной дате объекта 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:]: этот класс не соответствует кодированию значения ключа для контрольной даты".

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

Спасибо.


person glv19    schedule 21.11.2016    source источник


Ответы (1)


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

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

Например:

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

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

Редактировать Но обратите внимание на серьезную ошибку: если это UNTimeIntervalNotificationTrigger, nextTriggerDate будет неправильным.

person matt    schedule 21.11.2016