9

我正在尝试查找 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:]:此类不符合关键日期的关键值编码。”

是否有一种方法可以同时支持新旧通知。

谢谢你。

4

1 回答 1

15

找不到访问通知的预定触发日期的方法。

您已经表明您了解如何获取 UNNotificationTrigger。嗯,UNNotificationTrigger 是一个抽象超类。您需要找出它真正是什么类并将其归结为该类。然后你可以探索它的属性。

例如:

  • 如果它是 UNCalendarNotificationTrigger,则将其转换为 UNCalendarNotificationTrigger。现在它有一个nextTriggerDate.

  • 如果它是 UNTimeIntervalNotificationTrigger,则将其转换为 UNTimeIntervalNotificationTrigger。现在它有一个nextTriggerDate.

编辑但请注意,有一个巨大的错误:如果这是一个 UNTimeIntervalNotificationTrigger,那nextTriggerDate将是错误的。

于 2016-11-21T16:47:30.733 回答