我一直在尝试使用UILocalNotification并将时区设置为默认值以外的其他时区。
目的是做一些事情: - 用户将按时间和时区安排提醒 - 当该时区成为指定时间时显示警报。
在更多的口头描述中,假设我住在LosAngeles,我的gf在芝加哥。我希望在芝加哥早上7点工作日时设置警报。
对于一个警报,我可以不用时区,做绝对时间。但是我想允许用户设置重复标记,在这种情况下我似乎无法做 - 我尝试将localnotification的timezone属性设置为芝加哥,如上例所示,但本地通知不会触发。
我在序列化过程中记录了uinocalnotification,这是一个输出:
"<UIConcreteLocalNotification: 0xfb25a50>{fire date = 2011-02-06 06:02:00 -0800, time zone = America/Chicago (CST) offset -21600, repeat interval = 16, next fire date = 2011-02-06 08:02:00 -0800}"
我在芝加哥绝对时间上午9:02设置了解雇,并且时区设置为cst - 并且日志确实提到起火日期确实是当地时间06:02。然而,没有任何反应。此外,下一个开火日期很奇怪,因为它应该是+1天,而不是+2小时。
以下是我设置的方法: class classUILocalNotification = NSClassFromString(@“UILocalNotification”);
if (classUILocalNotification != nil) {
id note = [[classUILocalNotification alloc] init];
NSString *body = @"body message";
switch (repeatflag) {
case 1: [note setRepeatInterval:NSDayCalendarUnit]; break;
case 2: [note setRepeatInterval:NSWeekdayCalendarUnit]; break;
case 3: [note setRepeatInterval:NSWeekCalendarUnit]; break;
case 4: [note setRepeatInterval:NSMonthCalendarUnit]; break;
case 5: [note setRepeatInterval:NSYearCalendarUnit]; break;
default: break;
}
[note setFireDate:dt];
[note setAlertBody:body];
[note setTimeZone:timezone];
[note setHasAction:NO];
}
这似乎是一些未知的行为。任何人都有更好的方法来实现我想要做的事情? 谢谢!
答案 0 :(得分:0)
使用非本地时区时,UILocalNotification似乎存在错误。触发的第一个事件是针对正确的日期和时间和时区触发的。但是,后续事件会在本地时区中触发给定日期和时间,而不是setTimeZone方法中设置的日期和时间。 [iOS 6.1]