2017-07-25 74 views
4

我需要檢查應用程序是否移動到了後臺。爲什麼?Swift 3:檢查應用程序是否在後臺

那麼因爲我的應用程序使用藍牙,一次只能有一個人連接到此設備。因此,如果他們沒有使用它並且應用程序位於後臺,請斷開它們並將它們發送到連接主頁面。

現在我已經完成了這個。我在主要的第一類中有一個選擇器,並且具有斷開連接併發送到第一頁的功能。但是我沒有意識到的是,如果控制面板被拖拽,應用程序將處於「背景」。

從環視看來,似乎沒有辦法檢測控制面板是否長大。那麼,有沒有人有任何想法可以做到這一點?

實際上,我只是想要它,所以如果應用程序被移動到背景以外的任何其他原因比控制面板被提出,斷開設備。

選擇:

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") 
     } 
    } 

這不是其他問題重複。我知道如何檢查應用程序是否處於後臺狀態。我只是不想在控制面板被拔出時斷開連接...

+1

UIApplicationDidEnterBackground通知是您要查找的內容嗎? –

回答

1

您是否嘗試將viewResver添加到您的視圖控制器中的willResignActive中?

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


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

然後你也可以使用它。進入後臺狀態後,應用程序將被移至非活動狀態。

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) { 

} 
+0

欣賞評論。我已經有了這個。真正的問題是,我們如何能夠檢測到控制面板已經被提出......但我想這是沒有辦法的。 – jackabe

+0

不,沒有其他方法可以檢測應用程序移到背景的原因。 – 2017-07-25 13:13:02

1

在斯威夫特:

if UIApplication.shared.applicationState == .background { 
    // Add code here... 
} 

在Objective-C:

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

希望工程!

相關問題