Objective c 应用程序处于后台时未显示iOS UILocalNotification

Objective c 应用程序处于后台时未显示iOS UILocalNotification,objective-c,ios,cocoa-touch,uikit,uilocalnotification,Objective C,Ios,Cocoa Touch,Uikit,Uilocalnotification,修复了-好的,找到了它,出现了一个错误[[UIApplication sharedApplication]cancelAllLocalNotifications]在我没想到的时候被解雇了 这是你的问题 谢谢大家的帮助,很抱歉这只是一个哑巴编码综合症 我构建了本地通知,如下所示: - (void)scheduleNotification { [[UIApplication sharedApplication] cancelAllLocalNotifications]; Class

修复了-好的,找到了它,出现了一个错误
[[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];
    }
}
正如预期的那样,我的调试日志将在未来10秒内输出正确的fireDate。如果我不离开我的应用程序,我会得到一个成功的
应用程序:didReceiveLocalNotification:
回调

这里的问题是,如果我按下按钮安排此通知,然后按下home按钮将其置于后台。如果我这样做,通知永远不会触发,我也永远不会从操作系统获得警报视图

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


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

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

请参阅Apple文档中的示例:


是否是因为没有将时区设置为[NSTimeZone defaultTimeZone]导致了问题?如果未设置时区,则假定为GMT(默认为零)。

好的,找到了它,出现了错误[[UIApplication sharedApplication]cancelAllLocalNotifications];进入后台时被发送。

您是否在模拟器或设备上进行测试?我在模拟器中遇到了后台通知问题。这在模拟器和设备上都发生了。我想要通用时间版本(无时区),因为我希望在按下按钮后在指定的时间内发出通知。我已经尝试过,但仍然不起作用。请添加您的解决方案作为答案,这样这个问题就不再列在“未回答问题”列表中,可能会帮助其他人在将来找到问题的解决方案。