ios正确的方法来确定是否由于PushNotification操作而调用方法“applicationWillEnterForeground”

时间:2013-04-22 14:15:43

标签: ios notifications push-notification foreground

我正在开发一个在- (void)applicationWillEnterForeground:(UIApplication *)application中执行“A”任务的应用。

该应用程序还注册了远程通知。在- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo中,应用需要执行任务“B”。

当应用程序为后台并收到通知时,任务执行顺序为“A”,后跟“B”。

如果收到通知并且应用程序处于后台,我需要做的就是执行“B”任务。

如何实现这一目标?

由于

1 个答案:

答案 0 :(得分:0)

你发布这个问题已经有一个月了,所以我不确定你是否还需要一个答案,但我通过将所有共享的“入口逻辑”(我喜欢称之为)推送到{{1并简单地将入口方法存储为appdelegate对象中的状态。所以如果我从后台进入应用程序,那么我设置一个标志。如果我通过通知进入,我会存储通知消息(因此我可以智能地处理通知入口逻辑)。如果我通过网址进来,那么我会存储该网址。在applicationDidBecomeActive:我想看看我从哪个方向进来。以下是我所关注的州:

  1. 通过点按应用图标(无状态设置)
  2. 的新应用实例
  3. 通过点击应用图标或结束通话等方式从后台进入(仅输入前景标志设置,没有其他内容)
  4. 从APNS进入(通知数据已设置,请注意这可能是新的应用实例或来自后台)
  5. 来自网址(网址已设置,请注意这可能是新的应用实例或来自后台)
  6. 在一个地方拥有所有必要的信息,我可以智能地决定是否要执行通知入口逻辑,或者简单输入前台入口逻辑。

    顺便说一句,这个流程图非常宝贵! http://www.cocoanetics.com/2010/07/understanding-ios-4-backgrounding-and-delegate-messaging/