我使用此代码创建本地通知:
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的主屏幕上看不到通知警报正文。
一开始我想,通知未被调用,但后来我使用了调试并发现通知被正确调用。
所以,我不知道,为什么它不起作用。
答案 0 :(得分:3)
在我看来,问题是当应用在后台时你是如何调用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];
答案 1 :(得分:1)
这是正常行为,因为您在应用运行时直接触发通知,通知会发送给游览应用代表。
由于您的应用已在运行,通知中心不会处理通知。
答案 2 :(得分:1)
您正在使用presentLocalNotificationNow
方法。这将在您的应用程序运行时的当前时刻发布通知。
如果应用程序正在运行,则本地通知将不会收到警报或声音,因为它会直接由您的应用程序接收。
如果按主页按钮,则不会收到任何警报或声音。
<强> presentLocalNotificationNow:强>
立即提供本地通知。
- (void)presentLocalNotificationNow:(UILocalNotification *)notification
<强>参数强>
<强>
notification
强>A local notification that the operating system presents for the application immediately, regardless of the value of the notification’s fireDate property.
在后台状态下运行的应用程序可以 当有来电聊天时立即出现本地通知, 消息或更新。因为操作系统是复制的 通知,您可以在安排通知后将其发布。
答案 3 :(得分:0)
问题是我的应用程序在iphone设置中关闭了本地通知。现在我仍然使用presentLocalNotification,一切正常。
我的应用程序总是存在于后台,因为我的应用程序使用套接字。
但无论如何,抱歉浪费时间,试图帮助我的人,因为问题是由于我。