AppDelegate代码仅在Background上运行

时间:2014-08-16 11:41:50

标签: ios background appdelegate ibeacon foreground

我正在开发一个使用CoreLocation来管理iBeacons的iOS应用程序。我在AppDelegate和ViewController中都有Beacon检测,但我希望AppDelegate检测仅在应用程序处于后台状态时才能工作。当用户进入或离开某个区域时,我会将分析发送到服务器,因此,如果应用程序位于Foreground时,两者(AppDelegate和ViewController)检测都有效,则应用程序将发送加倍的分析。

当应用程序位于Foreground时,任何制作代码(服务器调用发送分析)的解决方案都不会运行?

2 个答案:

答案 0 :(得分:1)

在AppDelegate中,在applicationDidEnterBackground:方法中启动信标检测,并在applicationWillEnterForeground:方法中停止信标检测。

答案 1 :(得分:1)

只需在AppDelegate中实现方法即可跟踪您是否在前台,如果是,则停止从AppDelegate发送分析。见下文:

  - (void)applicationDidEnterBackground:(UIApplication *)application
  {
      _sendAnalytics = YES;
  }

  - (void)applicationWillEnterForeground:(UIApplication *)application
  {
       _sendAnalytics = NO;
  }

然后在从AppDelegate发送分析之前添加if语句以检查_sendAnalytics的值。

@ paulw11在他的评论中建议集中这个逻辑可能会使代码更清晰,但如果你确实需要在两个地方发送分析,上面的内容将解决你的问题。