为什么即使应用程序处于前台也会显示本地通知?

时间:2012-11-07 10:31:49

标签: objective-c ios notifications uilocalnotification

我正在处理游戏的通知方面,我对iOS处理本地通知的方式有疑问。

在代表application:didReceiveLocalNotification的文档中,它声明了以下内容:

If the application is running in the foreground, there is no alert, badging, or sound; instead, the application:didReceiveLocalNotification: method is called if the delegate implements it.

但是,当本地通知应该弹出并且我的应用程序在前台运行时,它将首先触发该委托(它是空的),然后显示警告。

我想知道一种在应用程序在前台运行时专门处理本地通知的方法。这甚至可能吗?

我需要这个的简短示例:当玩家开始建筑时,会创建一个本地通知,以便在建筑物完工时提醒他(最多6个小时)。但是,如果用户在游戏中弹出此通知时我想不显示它,因为他已经可以看到建筑物已经完成。

谢谢

2 个答案:

答案 0 :(得分:3)

application:didReceiveLocalNotification:

您需要处理是否要将通知显示为提醒或徽章或声音。因此,当您的应用程序在后台时,弹出警报/徽章/声音将通知用户该消息(在您的情况下,建筑物已完成)。但您可以选择在委托方法中忽略它。

编辑: 一旦触发该方法并且您的应用程序处于活动状态,您就可以放弃该通知

[[UIApplication sharedApplication] cancelLocalNotification:myNotification];

您认为在前台出现时会弹出错误。

答案 1 :(得分:1)

如果您致电cancelAllLocalNotifications:,即使通知已被解雇,它也会解除当前显示的提醒。