如何知道/检测前台的应用程序何时会在iOS上转到后台

时间:2020-10-21 13:26:56

标签: ios objective-c swift xamarin.ios

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

到目前为止,我已经尝试使用UIApplicationWillResignActiveNotification了,但是willResignActive并不意味着它会进入后台,而是意味着它将变为非活动状态。 (当您单击Siri并收到通知时,在您的应用程序顶部会出现来电)。

我已经尝试过DidEnterBackground,但是,只有在它已经处于后台模式时,它才会触发。

为什么我想知道这个答案?因为,我想在应用程序处于背景模式(而不是前景模式)时启用“画中画”模式。因此,我在前景模式下禁用画中画,然后在背景模式下启用该功能。我知道,通常Apple会在后台以及用户单击PiP模式时自动启用PiP。

之所以要这样做,是因为用户总是必须启用画中画模式,这真令人讨厌。因此,我认为如果我的应用在后台模式下启用此功能,那将是“干净的”。

那么,我怎么知道我的应用是否将进入后台?我愿意提出任何建议。

1 个答案:

答案 0 :(得分:0)

只是一个主意...创建一个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,但您也可以将其连接起来。您还可以添加更多的逻辑,但是其想法是将其打包好,然后可以在不同的地方针对不同的事件多次调用这些逻辑,希望它可以解决您的问题。