我使用以下代码创建本地通知:
UILocalNotification *notification=[[UILocalNotification alloc]init];
notification.soundName = @"new_friend_request.mp3";
notification.repeatInterval = 0;
notification.alertAction = @"Go to";
notification.userInfo = [NSDictionary dictionaryWithObject:@"actionNotification" forKey:@"actionNotification"];
notification.alertBody = @"Body";
[[UIApplication sharedApplication] presentLocalNotificationNow:notification];
[notification release];
但是按下主屏幕按钮后,我在iPhone的主屏幕上看不到通知警报正文文本。
一开始我以为没有调用该通知,但是后来我使用debug并发现,该通知被正确调用了。
所以,我不知道为什么它不起作用。
最佳答案
在我看来,问题是当应用程序在后台时如何调用presentLocalNotification
。我发现,如果我使用NSTimer
或dispatch_after
调用调用presentLocalNotification
的方法,则实际上在应用程序在后台时不会触发,而是推迟到应用程序返回到前台后才触发。我想知道您认为正在执行presentLocalNotification
的代码是否实际上在运行。
例如,在我的测试中,当我用下面的NSTimer
用法替换了基于scheduleLocalNotification
的代码调用时,如果该应用恰好在后台运行,则会收到通知。因此,将您的presentLocalNotification
行替换为:
// put all of your code configuring the UILocalNotification here
// but omit the presentLocalNotification, replacing it with the following code
// just for a test, fire the notification in 5 seconds
notification.fireDate = [[NSDate date] dateByAddingTimeInterval:5.0];
[[UIApplication sharedApplication] scheduleLocalNotification:notification];