我无法跨时区正确启动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我也始终获得完全相同的开火日期。
答案 0 :(得分:1)
UNTimeIntervalNotificationTrigger
可以解决这个问题。
您可以计算您设置的日期与当前日期之间的差异,然后安排时间间隔触发器。
func timeIntervalTrigger(from date: Date, repeats: Bool) -> UNTimeIntervalNotificationTrigger {
let timeInterval = date.timeIntervalSinceNow
let trigger = UNTimeIntervalNotificationTrigger(timeInterval: timeInterval, repeats: repeats)
return trigger
}