首页 > 解决方案 > 如何知道/检测前台的应用程序何时会在 iOS 上转到后台

问题描述

我目前正在处理具有背景和前景的任务。当我的应用程序将进入后台时,我是否可以检测到我的应用程序?我已经从互联网上搜索并阅读了许多信息,但我没有得到我想要的。当我在互联网上搜索时,这一切都是关于“当应用程序移至后台时”,“当应用程序已经在后台时”,以及它已经在后台发生的事情。

到目前为止,我已经尝试过,UIApplicationWillResignActiveNotification但是 willResignActive 并不意味着它会进入后台——这意味着它会处于非活动状态。(当我点击 Siri 时,以及当通知到来时,您的应用程序顶部的来电)。

我已经试过了,DidEnterBackground但是你,它只在它已经处于后台模式时触发。

为什么我想知道这个答案?因为,我想在应用程序处于后台模式(而不是前台模式)时启用画中画模式。所以,我在前景模式下禁用画中画,然后在后台模式下启用它。我知道,通常苹果会在后台自动启用画中画,当用户单击画中画模式时。

我之所以要这样做是因为,如果用户总是必须启用画中画模式,那就太烦人了。所以,我认为如果我的应用程序处于后台模式时启用此功能,那将是“干净的”。

那么,我怎么知道我的应用程序是否会进入后台?我对任何建议持开放态度。

标签: iosobjective-cswiftxamarin.ios

解决方案


只是一个想法...创建一个ivar,说inFront和两个方法,如下

// Signals that app is going to the back
- ( void ) toBack
{
  if ( self.inFront )
  {
    self.inFront = NO;
    // stuff e.g. start PiP
  }
}

// Signals that app is going to the front
- ( void ) toFront
{
  if ( ! self.inFront )
  {
    self.inFront = YES;
    // stuff e.g. stop PiP
  }
}

问题是它没有你想要的那么干净。现在您需要找到将其连接到的地方,例如viewWillAppearviewWillDisappear但您也可以将其连接到更多。您还可以添加更多逻辑,但想法是很好地打包它,然后您可以从不同的地方和不同的事件多次调用它们,希望它可以解决您的问题。


推荐阅读