ios确定方法是否正确的方法;“应用程序将进入前台”;由于PushNotification操作而调用

ios确定方法是否正确的方法;“应用程序将进入前台”;由于PushNotification操作而调用,ios,notifications,push-notification,foreground,Ios,Notifications,Push Notification,Foreground,我正在开发一个应用程序,该应用程序在-(void)application willenterforeground:(UIApplication*)应用程序中执行任务“a” 该应用程序还注册了远程通知。在-(void)application:(UIApplication*)application didReceiveMemotentification:(NSDictionary*)userInfo中,应用程序需要执行任务“B” 当应用程序处于后台且收到通知时,任务执行顺序为“a”,后跟“B” 我需

我正在开发一个应用程序,该应用程序在
-(void)application willenterforeground:(UIApplication*)应用程序
中执行任务“a”

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

当应用程序处于后台且收到通知时,任务执行顺序为“a”,后跟“B”

我需要做的是,在收到通知且应用程序处于后台的情况下,只执行“B”任务

如何做到这一点


谢谢

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

  • 点击应用程序图标创建新应用程序实例(未设置状态)
  • 通过点击应用程序图标或结束电话等方式从后台进入(仅输入前台标志集,其他无需输入)
  • 来自APNS(已设置通知数据,请注意,这可能是新应用程序实例或来自后台)
  • 来自url(url已设置,请注意,这可能是新应用程序实例或来自后台)
  • 在一个地方有了所有必要的信息后,我可以智能地决定是执行通知入口逻辑,还是执行简单的进入前台入口逻辑

    顺便说一句,这个流程图非常宝贵

    “B”是什么样的任务?应用程序在后台时只能执行某些操作,这些操作受到很大限制——使用导航、播放音频、下载报摊内容——仅此而已。@Reid Belton-(void)application:(UIApplication*)application DidReceiveMemotentification:(NSDictionary*)userInfo没有限制,这取决于“B任务”是什么是