2

关于为什么本地通知没有在这里那里正确触发有很多问题,还有一些关于为什么当应用程序处于后台状态时本地通知没有触发的问题,我也经历了这些问题。

但令我惊讶的是,我没有找到任何与前台状态或处于活动状态相关的通知帖子,即在我的应用程序中我遇到了这个奇怪的问题,即当应用程序进入后台模式时本地通知会触发,而当应用程序进入后台模式时它不会触发应用程序处于活动状态或前台模式,再次令我惊讶的是,即使在为通知设置的触发日期过期后,进入后台后,通知也会立即触发。

编辑

我面临的另一个问题是警报没有触发,即我们在 didReceive 本地通知方法中编写的警报动作,这是实现代码:

- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification 
{
    application.applicationIconBadgeNumber = 0;
    NSString *reminderText = [notification.userInfo objectForKey:addViewController.textField.text];
    [self.addViewController showReminder:reminderText];
}

这是另一个控制器中存在的 showReminder 方法,即:

//Notification alert
- (void)showReminder:(NSString *)text
{
    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Reminder" message:text delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil];

    UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(220, 10, 40, 40)];

    UIImage *image= [UIImage imageNamed:@"icon@2x.png"];
    [imageView setImage:image];

    [alertView addSubview:imageView];
    [imageView release];

    [alertView show];
    [alertView release];
}

抱歉,如果此问题不需要问题或在 stackoverflow 中发布。

任何人请发表您的建议,任何帮助都将不胜感激!

提前谢谢大家:)

4

1 回答 1

6

如果应用程序处于活动状态,那么您将不会收到任何声音、徽章或警报,但是application:didReceiveLocalNotification:将调用应用程序委托

来自苹果文档

如果在系统传递通知时应用程序处于最前面且可见,则不会显示警报,不会标记图标,也不会播放声音。但是,如果应用程序委托实现了 application:didReceiveLocalNotification: ,则会调用它。UILocalNotification 实例被传递到此方法中,并且委托可以检查其属性或访问 userInfo 字典中的任何自定义数据。

于 2012-06-27T06:01:51.163 回答