跨时区触发UNNotification

时间:2017-04-27 07:00:45

标签: ios timezone 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,可能还有其他人。但即使我改变了时区,AFAIK我也始终获得完全相同的开火日期。

1 个答案:

答案 0 :(得分:1)

UNTimeIntervalNotificationTrigger可以解决这个问题。

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

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