应用程序在后台时不显示iOS UILocalNotification

固定 – 好的,发现它是什么,有一个错误的[[UIApplication sharedApplication] cancelAllLocalNotifications]; 在我没想到的时候被解雇了。

那是你的问题。

感谢大家的帮助,很抱歉让它变得愚蠢的编码器综合症。

我已经建立了我的本地通知,如下所示:

 - (void)scheduleNotification { [[UIApplication sharedApplication] cancelAllLocalNotifications]; Class cls = NSClassFromString(@"UILocalNotification"); if (cls != nil) { UILocalNotification *notif = [[cls alloc] init]; NSLog(@"%@", [NSDate date]); notif.fireDate = [NSDate dateWithTimeIntervalSinceNow:10]; notif.alertBody = NSLocalizedString(@"Hello.", nil); [[UIApplication sharedApplication] scheduleLocalNotification:notif]; NSLog(@"Notification scheduled at %@", notif.fireDate); [notif release]; } } 

正如预期的那样,我的调试日志将来会输出正确的fireDate 10秒。 如果我不离开我的应用程序,我会得到一个成功的application:didReceiveLocalNotification: callback。

这里的打嗝是,如果我按下按钮来安排此通知并点击主页按钮将其置于后台。 如果我这样做,通知永远不会触发,我从来没有从操作系统获得警报视图。

我错过了一些明显的东西吗? 我在这里向上和向下看,苹果文档,觉得我错过了一些明显的东西。

任何帮助将不胜感激。 谢谢。

请参阅Apple文档中的示例: http : //developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/IPhoneOSClientImp/IPhoneOSClientImp.html#//apple_ref/doc/uid/TP40008194-CH103-SW1

可能是因为没有将timeZone设置为[NSTimeZone defaultTimeZone]会导致问题吗? 如果未设置timeZone,则假定为GMT(默认为零)。

您是否尝试将代码包装在后台任务中?

好的,发现它是什么,有一个错误的[[UIApplication sharedApplication] cancelAllLocalNotifications]; 在进入后台时被发送。