В данный момент кажется, что нет способа проверить, запущен ли сеанс, с помощью ARSession самого объекта. Однако, реализовав ARSCNViewDelegate
, вы можете получать уведомления, когда ваш сеанс прерывается или прерывание заканчивается.
Один из способов достижения вашей цели - установить логическое значение и обновлять его всякий раз, когда вы приостанавливаете / возобновляете сеанс, и проверяйте его значение в ваших функциях.
class ViewController: UIViewController, ARSCNViewDelegate {
var isSessionRunning: Bool
func foo() {
if self.isSessionRunning {
// do stuff
}
}
func pauseSession() {
self.sceneView.session.pause()
self.isSessionRunning = false
}
func runSession() {
let configuration = ARWorldTrackingConfiguration()
sceneView.session.run(configuration)
self.isSessionRunning = true
}
// ARSCNViewDelegate:
func sessionWasInterrupted(_ session: ARSession) {
self.isSessionRunning = false
}
func sessionInterruptionEnded(_ session: ARSession) {
self.isSessionRunning = true
}
}