Swift ARKit How do you fully kill an ARSession?
Officially, right now, you can't.
However, there is a work-around: you make the ARSCNView
disposable.
On leaving AR, first pause the ARSession
. Then deallocate the entire ARSCNView
hierarchy & set ARSCNView
to nil
for good measure. Rebuild the entire ARSCNView
hierarchy and start a new session whenever you need to go back to AR.
var ARview: ARSCNView?
func punchTheClown() {
ARView?.session.pause()
ARView?.removeFromSuperview()
ARView = nil
}
Other non-AR areas of your app would typically be in a separate view hierarchy at the same sibling level as your ARSCNView
. I look forward to Apple providing an actual stopSession()
function, so we can all stop having to punchTheClown in the meantime.
From the docs
While paused, the session doesn't track device motion or capture scene imagery, nor does it coordinate with its delegate object or update any associated ARSCNView or ARSKView object
If it isn’t causing issues, better be left alone. As far as I know. This works like a video player. You can Pause and resume it anytime
Source here: .RunOptions ARKit Docs