访问 UNNotificationRequest 对象的预定日期
Accessing the scheduled date of a UNNotificationRequest object
我正在尝试查找 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.
之前的通知日期时出现以下错误
Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[ valueForUndefinedKey:]: this class is not key value coding-compliant for the key date.'
有没有一种方法可以同时支持新旧通知。
谢谢。
can't find a way to access the scheduled fire date of the notification.
您已经表明您了解如何获取 UNNotificationTrigger。嗯,UNNotificationTrigger 是一个抽象的 superclass。您需要找出 class 它 真正 是什么,然后将其转化为 class。然后你可以探索它的属性。
例如:
如果它是 UNCalendarNotificationTrigger,则将其转换为 UNCalendarNotificationTrigger。现在它有一个 nextTriggerDate
.
如果它是 UNTimeIntervalNotificationTrigger,则将其转换为 UNTimeIntervalNotificationTrigger。现在它有一个 nextTriggerDate
.
编辑 但是请注意,这里有一个巨大的错误:如果这是一个 UNTimeIntervalNotificationTrigger,nextTriggerDate
将是错误的。
我正在尝试查找 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.
之前的通知日期时出现以下错误Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[ valueForUndefinedKey:]: this class is not key value coding-compliant for the key date.'
有没有一种方法可以同时支持新旧通知。
谢谢。
can't find a way to access the scheduled fire date of the notification.
您已经表明您了解如何获取 UNNotificationTrigger。嗯,UNNotificationTrigger 是一个抽象的 superclass。您需要找出 class 它 真正 是什么,然后将其转化为 class。然后你可以探索它的属性。
例如:
如果它是 UNCalendarNotificationTrigger,则将其转换为 UNCalendarNotificationTrigger。现在它有一个
nextTriggerDate
.如果它是 UNTimeIntervalNotificationTrigger,则将其转换为 UNTimeIntervalNotificationTrigger。现在它有一个
nextTriggerDate
.
编辑 但是请注意,这里有一个巨大的错误:如果这是一个 UNTimeIntervalNotificationTrigger,nextTriggerDate
将是错误的。