presentLocalNotification

presentLocalNotification

我使用以下代码创建本地通知:

        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。我发现,如果我使用NSTimerdispatch_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];

10-08 07:38