앱을 개발하고 있는데 ARView를 사용하는 화면을 처음 실행하게되면 문제가 없었는데 2번째 실행할때부터 ARSession error code 102 오류가 발생하면서 화면이 나타나지 않는 문제가 발생하였습니다.
문제의 원인은 기존에 활성화되어있는 센서들이 충돌을 하는것이 원인인것 같습니다.(사실 원인은 정확하게 찾지 못하였습니다.)
해결방법은 ARSessionDelegate를 구현하는 부분에 아래와같은 코드를 추가하여서 102번 오류에 대해서 다시 ARView를 세팅해주면 해결이 되는것을 확인하였습니다.
func session(_ session: ARSession, didFailWithError error: Error) {
if let arError = error as? ARError {
switch arError.errorCode {
case 102: restartSetting()
default: restartSetting()
}
}
}
private func restartSetting() {
let configuration = ARFaceTrackingConfiguration()
arView.frame = view.frame
arView.session.run(configuration)
arView.session.delegate = self
face.delegate = self
self.view.addSubview(self.arView)
videoManager.startVideoCapturing()
addCamera()
}
private func addCamera() {
let videoLayer = videoManager.videoLayer
videoLayer.frame = self.view.frame
videoLayer.videoGravity = .resizeAspectFill
self.view.layer.addSublayer(videoLayer)
}