我正在使用(臭名昭着的)Drew Dahlman's Phonegap Local Notifications in iOS。 似乎可以工作。
我从未写过一行 objective-c 并且不愿意(这可能就是我现在遇到麻烦的原因!)但是我认为这个插件工作不正常而且会喜欢尽可能修复它。
当我在今天13:00设置通知时,它会正确触发。但是,当夏令时发生时,通知会在晚上14点开始发射。
这是因为时区没有被考虑在内吗?德鲁提到时区设置为+0000不是问题,但这是错误的信息吗?我应该更新插件来处理时区和夏令时吗?或者在我自己的代码中处理夏令时,只需在DST处于活动状态时将日期设置为-1小时?
我认为我必须更新 LocalNotification.m 中的第二行,但正如我所说,我不确定要将其更新为什么。
UILocalNotification *notif = [[UILocalNotification alloc] init];
notif.timeZone = [NSTimeZone defaultTimeZone];
答案 0 :(得分:1)
啊,设置通知时似乎有点奇怪的问题。
示例1:
当我做这样的事情时,duedate
的值是2013-04-08T21:30
var d = new Date(duedate).getTime();
d = new Date(d);
plugins.localNotification.add({
date: d,
...
通知记录为设置为21:30,如下所示:
Notification Set: 2013-04-08 21:30:00 +0000
示例2:如果我像这样设置duedate
:(现在时间是21:30)
var d = new Date().getTime();
通知记录为设置为20:30,如下所示:
Notification Set: 2013-04-08 20:30:00 +0000
然而在第二个示例中,由于节省了一天的费用,通知会在21:30触发。
解决方案(各种各样)
我将不得不在现在和我希望触发通知之间添加或减去时间差异,而不是专门设置日期。
答案 1 :(得分:0)
这很有趣。我在创建插件时遇到的最重要的事情之一就是JS和OBJ-C解释时间的奇怪方式。根据文档,您可以使用systemTimeZone
,但这又是由插件所依赖的系统设置的。这是用户设置和手机正在使用的时间。
即使认为它默认为+ 000GMT,它仍然在系统时间内考虑到这一点,并对+0500进行调整或者你所在的区域。
UILocalNotification not using the correct timezone
NSTimeZone: what is the difference between localTimeZone and systemTimeZone?
两者都处理这个问题 - 默认情况下插件使用的是系统时间。