3

我有一个闹钟应用程序,该应用程序设计为在前台运行时以特定方式运行,并接收我的应用程序安排的本地通知。当用户设置警报时,我的应用程序会创建一个本地通知。当该本地通知触发时,它会调用该didReceiveLocalNotification方法来提醒用户。问题是,如果我的应用程序在前台运行并且推送通知来自不同的应用程序,那么它会显示模式推送通知视图,这会阻止我的应用程序在本地通知触发时提醒用户。一旦我关闭推送通知模式视图,我的应用程序就会触发本地通知。有没有解决的办法?我问是因为如果我的应用程序在用户安排它启动时没有触发警报,

非常感谢你的智慧!

4

2 回答 2

4

应用程序有 5 种不同的状态:

  • 前台活跃
  • 前台不活动
  • 背景运行
  • 背景暂停
  • 不运行

当您启动应用程序时,它处于“前台活动”状态,然后,当显示模式推送通知时,您的应用程序将进入“前台不活动”状态。

在文档中,Apple 说(http://developer.apple.com/library/ios/#documentation/uikit/reference/UIApplicationDelegate_Protocol/Reference/Reference.html):

如果它在应用程序未在前台处于活动状态时提供它,它会显示警报、标记应用程序图标或播放声音——无论在 UILocalNotification 对象中指定什么。如果应用程序在前台运行,则没有警报、标记或声音;相反,如果委托实现它,则调用 application:didReceiveLocalNotification: 方法。

因此,在前台,application:didReceiveLocalNotification:仅当您的应用程序处于活动状态时才会被调用,并且在您关闭模式通知时它会变为活动状态。

这是边界,这种情况没有解决方案。

于 2011-03-11T10:39:29.660 回答
1

我不相信有办法绕过它。您可能可以播放声音或振动,但操作系统已经通过推送通知警报请求用户注意,因此在用户处理第一个之前发布另一个确实无济于事。当用户同时安排两个闹钟时,你如何处理事情?

于 2011-03-08T14:02:47.843 回答