Ios Swift 3:检查应用程序是否在后台

Ios Swift 3:检查应用程序是否在后台,ios,swift,xcode,background,selector,Ios,Swift,Xcode,Background,Selector,我需要检查应用程序是否移动到后台。为什么? 因为我的应用程序使用蓝牙,一次只能有一个人连接到这个设备。因此,如果他们不使用,且应用程序在后台,请断开他们的连接并将他们发送到connect主页 现在我已经做到了。我在主第一类中有一个选择器和一个断开连接并发送到第一页的函数。但我没有意识到的是,如果控制面板被拉起,应用程序就在“后台” 环顾四周,似乎无法检测控制面板是否启动。那么,有没有人对我如何以不同的方式做到这一点有什么想法 事实上,我只是想这样,如果应用程序被移动到后台的任何其他原因,而不是控

我需要检查应用程序是否移动到后台。为什么?

因为我的应用程序使用蓝牙,一次只能有一个人连接到这个设备。因此,如果他们不使用,且应用程序在后台,请断开他们的连接并将他们发送到connect主页

现在我已经做到了。我在主第一类中有一个选择器和一个断开连接并发送到第一页的函数。但我没有意识到的是,如果控制面板被拉起,应用程序就在“后台”

环顾四周,似乎无法检测控制面板是否启动。那么,有没有人对我如何以不同的方式做到这一点有什么想法

事实上,我只是想这样,如果应用程序被移动到后台的任何其他原因,而不是控制面板被打开,断开与设备的连接

选择器:

let notificationCenter = NotificationCenter.default
notificationCenter.addObserver(self, selector: #selector(appMovedToBackground), name: Notification.Name.UIApplicationWillResignActive, object: nil)
功能:

@objc func appMovedToBackground() {
        if (ViewController.connectedPeripheral != nil) {
            print("App moved to background!")
            let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
            let nextViewController = storyBoard.instantiateViewController(withIdentifier: "connectView") as! ViewController
            self.navigationController?.pushViewController(nextViewController, animated: true)
            ViewController.centralManager.cancelPeripheralConnection(ViewController.connectedPeripheral!)
        }
        else {
            print("App moved to background but no device is connected so no further action taken")
        }
    }

这不是其他问题的重复。我知道如何检查应用程序是否处于后台状态。我只是不想在打开控制面板时断开连接…

您是否尝试过在视图控制器中将观察者添加到willResignActive

NotificationCenter.default.addObserver(self, selector: #selector(willResignActive), name: .UIApplicationWillResignActive, object: nil)


func willResignActive(_ notification: Notification) {
    // code to execute
}

那你也可以用这个。进入后台状态后,应用程序将移动到非活动状态

override func viewDidLoad() {
    super.viewDidLoad()

    let app = UIApplication.shared

    //Register for the applicationWillResignActive anywhere in your app.
    NotificationCenter.default.addObserver(self, selector: #selector(ViewController.applicationWillResignActive(notification:)), name: NSNotification.Name.UIApplicationWillResignActive, object: app)
}

func applicationWillResignActive(notification: NSNotification) {

}
迅速:

if UIApplication.shared.applicationState == .background {
    // Add code here...
}
在目标C中:

if ([UIApplication sharedApplication].applicationState == UIApplicationStateBackground) {
    // Add code here...
}

希望它能起作用

UIApplicationIdentinterBackground通知是您想要的吗?感谢您的评论。我已经有这个了。真正的问题是,我们如何检测控制面板被打开…但我想没有办法。没有其他方法可以检测应用程序移动到后台的原因。