如何通知通知会导致应用程序处于什么状态?

时间:2011-08-21 16:39:46

标签: iphone objective-c uilocalnotification

我设置了UILocalNotification,据我所知,我有5种不同的场景:

  1. 应用未运行,用户选择查看通知,因此会启动应用。
  2. 应用未运行,用户选择关闭通知,然后在以后打开应用。
  3. 应用程序在后台运行,用户选择查看通知,因此它将应用程序带到前台。
  4. 应用程序在后台运行,用户选择关闭通知,然后打开应用程序,将其带到前台。
  5. 该应用正在前台运行。
  6. 我如何处理这5种不同的情景?

2 个答案:

答案 0 :(得分:2)

  1. 将您的代码放入application:didFinishLaunchingWithOptions:。在 行动NSDictionary您将找到有关的信息 通知。

  2. 您可以再次检查application:didFinishLaunchingWithOptions:是否为本地 通知仍然有效并采取适当的措施。

  3. 将您的代码放入applicationWillEnterForeground:

  4. 同样的位置,只需检查是否有活动的本地通知。

  5. 您可以在此处检入application:didReceiveLocalNotification:并通知用户。

答案 1 :(得分:0)

不完全确定您的目标,但以下内容可能会回答您的问题。

来自documentation

  

当系统发送本地通知时,可能会发生一些事情,具体取决于应用程序状态和通知类型。如果应用程序不是最前面且可见,则系统会显示警报消息,对应用程序进行标记,并播放声音 - 通知中指定的任何内容。如果通知是警报并且用户点击操作按钮(或者,如果设备被锁定,则拖动打开操作滑块),则启动应用程序。在应用程序:didFinishLaunchingWithOptions:方法中,应用程序委托可以使用UIApplicationLaunchOptionsLocalNotificationKey键从传入的选项字典中获取UILocalNotification对象。委托可以检查通知的属性,如果通知在其userInfo字典中包含自定义数据,则它可以访问该数据并相应地处理它。另一方面,如果本地通知仅标记应用程序图标,并且响应中的用户启动应用程序,则调用application:didFinishLaunchingWithOptions:方法,但选项字典中不包含UILocalNotification对象。

     

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