访问UNNotificationRequest对象的计划日期

glv*_*v19 9 ios ios10 unnotificationrequest unusernotificationcenter

我试图找到UNNotificationRequest对象的预定开火日期.

我正在提取这样的待处理通知请求:

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

        let pendingNotifications : [UNNotificationRequest] = notifications
    }
Run Code Online (Sandbox Code Playgroud)

然后我尝试访问每个UNNotificationRequest对象的触发日期.

我可以按如下方式访问UNNotificationTrigger,但无法找到访问通知的计划发布日期的方法.

let notification = pendingNotifications[indexOfNotification]
let trigger : [UNNotificationTrigger] = notification.trigger
Run Code Online (Sandbox Code Playgroud)

我已经能够访问一些通知的日期,如下所示:

let date = trigger.value(forKey: "date") as! Date
Run Code Online (Sandbox Code Playgroud)

这适用于使用UNUserNotificationCenter安排的通知,但在尝试访问iOS 10之前安排的通知日期时出现以下错误.

由于未捕获的异常'NSUnknownKeyException'而终止应用程序,原因:'[valueForUndefinedKey:]:此类不是关键日期的密钥值编码兼容.

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

谢谢.

mat*_*att 12

找不到访问通知的预定开火日期的方法.

您已经表明了解如何获取UNNotificationTrigger.好吧,UNNotificationTrigger是一个抽象的超类.你需要找出它真正的类,然后把它归入那个类.然后你可以探索它的属性.

例如:

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

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