2011-08-21 55 views
1

我有一个UILocalNotification成立,而据我可以看到它我有5个不同的场景:如何查看通知结果中的应用程序状态?

  1. 的应用程序没有运行,用户选择查看的通知,所以启动应用程序。
  2. 该应用程序未运行,用户选择关闭通知,然后在稍后的日期打开应用程序。
  3. 该应用程序正在后台运行,用户选择查看通知,因此它将应用程序置于前台。
  4. 该应用程序正在后台运行,用户选择关闭通知,然后打开该应用程序,以便在稍后的日期将其显示在前台。
  5. 该应用程序在前台运行。

我该如何处理这5种不同的场景?

回答

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

  2. 如果本地 通知仍处于活动状态并采取相应措施,您可以再次检查application:didFinishLaunchingWithOptions:

  3. 把你的代码放到applicationWillEnterForeground:

  4. 再次在同一地点,只是检查是否有活动的本地通知。

  5. 在这里您可以检查application:didReceiveLocalNotification:并通知用户与否。

0

不完全确定你在做什么,但以下可能会回答你的问题。

documentation

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

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

相关问题