Ios 为什么当控制中心打开时,swift应用程序在后台运行?

Ios 为什么当控制中心打开时,swift应用程序在后台运行?,ios,swift,nsnotificationcenter,Ios,Swift,Nsnotificationcenter,在我的swift应用程序中,当活动进入后台时,我正在注销,但当控制中心打开时,它将进入后台。我的代码如下: class MyApp:UIViewController{ NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(appMovedToBackground), name: UIApplicationWillResignActiveNotification, object: nil)

在我的swift应用程序中,当活动进入后台时,我正在注销,但当控制中心打开时,它将进入后台。我的代码如下:

class MyApp:UIViewController{
   NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(appMovedToBackground), name: UIApplicationWillResignActiveNotification, object: nil)

   func appMovedToBackground() {
        print("App moved to background!")
        self.logout() 
    }
}

当活动在后台运行时,应用程序是否可以注销,但当控制中心打开时,应用程序是否可以注销

UIApplicationWillResignActiveNotification
不应用于检测应用程序何时进入后台。您应该改用
UIApplicationIdentinterBackgroundNotification
,它仅在应用程序实际进入后台时调用,而不是在打开control center或从顶部打开通知时调用

当control center打开时,您的应用确实变为非活动状态,因此会触发
UIApplicationWillResignActiveNotification
通知,这是预期的行为

看看苹果文档

当应用程序不再处于活动状态并失去焦点时发布

应用程序在接收事件时处于活动状态。活动应用程序可以是 据说有焦点。它在启动后获得焦点,但失去焦点 当覆盖窗口弹出或设备被锁定时,并获得 设备解锁时聚焦

在您的情况下,会弹出一个覆盖窗口(控制中心),因此会触发此通知。

@sulabhqg:Most-welcome:)。如果绿色勾号对您有帮助,您可以通过勾选绿色勾号将答案标记为已接受:)