Iphone UILocalNotification计划,在格林尼治标准时间上午10点重复发布

Iphone UILocalNotification计划,在格林尼治标准时间上午10点重复发布,iphone,objective-c,nsdate,uilocalnotification,Iphone,Objective C,Nsdate,Uilocalnotification,很抱歉,如果这是一个绝对的noob问题,但我无法从文档或其他堆栈问题中找出这个问题- 如何将NSDate对象设置为格林威治标准时间上午10:00?我问这个问题的原因是——我想将localnotification设置为每天上午10:00GMT 我认为以下几点是正确的: NSDateComponents *comps = [[NSDateComponents alloc]init]; [comps setTimeZone:[NSTimeZone timeZoneWithAbbreviatio

很抱歉,如果这是一个绝对的noob问题,但我无法从文档或其他堆栈问题中找出这个问题-

如何将NSDate对象设置为格林威治标准时间上午10:00?我问这个问题的原因是——我想将localnotification设置为每天上午10:00GMT

我认为以下几点是正确的:

    NSDateComponents *comps = [[NSDateComponents alloc]init];
[comps setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];

[comps setYear:2011];
[comps setMonth:1];
[comps setWeek:1];
[comps setDay:1];
[comps setHour:10];
[comps setMinute:52];
[comps setSecond:0];

NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar];

NSDate *date = [gregorian dateFromComponents:comps];
[comps release];

UILocalNotification *notif = [[UILocalNotification alloc]init];

notif.fireDate = date;
notif.timeZone = [NSTimeZone timeZoneWithAbbreviation:@"UTC"];
notif.alertBody = @"New Challenges are available in Halo: Reach.\n\n Give them a look over with Halo Reach Challenges!";
notif.alertAction = @"Show Me";
notif.applicationIconBadgeNumber = 5;
notif.repeatInterval = NSDayCalendarUnit;

[[UIApplication sharedApplication] scheduleLocalNotification:notif];
[notif release];

不幸的是,这不会开火。非常感谢您的帮助:)

只要您的应用程序正在运行,通知就会直接发送到您的应用程序。您需要设置一个处理程序(在appDelegate中)并自己显示消息。应用程序未运行时,应显示通知。

Ok。我假设UILocalNotification文档中将链接一个协议引用。我所要做的就是显示一个包含预期消息的UIAlertView,对吗?好的,如果我将它设置为过去的日期,并且重复打开。。。它会立即启动,但重播间隔应该仍然有效,对吗?还是我必须得到今天的日期,将其拆分并添加一天?文档中明确提到了前者(它在过去的日期立即触发的事实)。然而,没有人注意到重复动作会发生什么。我希望它们能正常工作(也就是说,独立于过去或未来的原始存在),但这应该很容易检查。耶,它能按预期工作。我用NSMinuteTimeInterval进行了测试。谢谢你的帮助。但我决定不显示UILocalNotification-该应用程序非常非常。。。专注,我知道我的用户也非常专注。如果他们不想检查数据,就不会打开应用程序。