跨时区触发UNNotification

Jon*_*nny 5 timezone ios unnotificationrequest unnotificationtrigger

我无法跨时区正确触发iOS 10本地通知(UNNotification)。

在+10小时的时区中,我希望它在17:00:00触发并安排它。

稍后,当我查看计划的通知时,我会得到它的下一个触发日期,仍在时区+10小时,它将显示17:00:00。

但是,当我在设备上将时区更改为+8小时,并查看预定的通知时,我会得到它的下一个触发日期,并且仍然显示 17:00:00。我希望它能在两个小时前的15:00:00触发。

如何使它像这样工作?我试图改变用于创建送入UNCalendarNotificationTrigger日期组件的日历时区(试过的事情是:TimeZone.init(identifier: "Somewhere")TimeZone.autoupdatingCurrent,可能还有其他人)。但这不会改变,即使我更改了时区,我也总是得到完全相同的触发日期。

Jus*_*Jia 4

UNTimeIntervalNotificationTrigger可以解决这个问题。

您可以计算您设置的日期与当前日期之间的差异,然后安排时间间隔触发。

func timeIntervalTrigger(from date: Date, repeats: Bool) -> UNTimeIntervalNotificationTrigger {
    let timeInterval = date.timeIntervalSinceNow
    let trigger = UNTimeIntervalNotificationTrigger(timeInterval: timeInterval, repeats: repeats)
    return trigger
}
Run Code Online (Sandbox Code Playgroud)