5

我无法跨时区正确触发 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可能还有其他)。但它不会改变,AFAIK即使我改变时区,我总是得到完全相同的开火日期。

4

1 回答 1

2

UNTimeIntervalNotificationTrigger可以解决这个问题。

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

func timeIntervalTrigger(from date: Date, repeats: Bool) -> UNTimeIntervalNotificationTrigger {
    let timeInterval = date.timeIntervalSinceNow
    let trigger = UNTimeIntervalNotificationTrigger(timeInterval: timeInterval, repeats: repeats)
    return trigger
}
于 2017-07-11T23:35:07.317 回答