PhoneGap iOS LocalNotifications夏令时
我在iOS中使用(臭名昭着的) Drew Dahlman的Phonegap本地通知 。 它似乎工作。
我从来没有写过一个Objective-C的行,而不愿意(这可能是为什么我现在有麻烦!),但我认为这个插件是不正确的,想要解决它,如果可能的话。
当我在13:00设置通知时,它会正确启动。 但是,如果夏令时正在进行,通知将在14:00,晚一个小时发生。
这是因为时区没有被考虑在内吗? 德鲁提到时区被设置为+0000不是一个问题,但这是错误的信息? 我应该更新插件来处理时区和夏令时? 或者在我自己的代码中处理夏令时,并简单地设置DST为活动状态时的date-1小时?
我想我必须在LocalNotification.m中更新这些行的第二行,但正如我所说,我不确定要更新到哪一行 。
UILocalNotification *notif = [[UILocalNotification alloc] init]; notif.timeZone = [NSTimeZone defaultTimeZone];
啊,似乎有一个奇怪的问题,当通知设置。
示例1:当我做这样的事情时,在duedate
:30
var d = new Date(duedate).getTime(); d = new Date(d); plugins.localNotification.add({ date: d, ...
通知被logging为21:30,如下所示:
Notification Set: 2013-04-08 21:30:00 +0000
例2:如果我这样设置duedate
:(现在是21点30分)
var d = new Date().getTime();
通知被logging为20:30,如下所示:
Notification Set: 2013-04-08 20:30:00 +0000
但是 ,在第二个例子中,由于白天节约,通知在21:30发生。
解决scheme (各种)
我将不得不添加或减去从现在到当我想通知触发时间的差异,而不是专门设置date。
这很有趣。 我在创build插件时处理的最大的事情之一是JS和OBJ-C解释时间的奇怪方式。 根据文档,你可以使用systemTimeZone
但这systemTimeZone
系统设置的插件是依靠。 这是用户设置和手机正在使用的时间。
即使认为它默认为+ 000GMT,它仍然在系统时间内考虑到这一点,并进行调整+0500或你所在的区域。
UILocalNotification不使用正确的时区
NSTimeZone:localTimeZone和systemTimeZone有什么区别?
两者都处理这个 – 默认情况下插件是使用系统时间。