구현하는 앱에서는 카메라와 로컬 네트워크에 대한 사용자의 접근 권한 허용이 반드시 필요했습니다.
기존에는 이를 위해 Info.plist에 Privacy - Local Network Usage Description와 Privacy - Camera Usage Description만 추가한 상황이었습니다.
사용자가 권한 허용을 거부했을 때, 기능이 동작하지 않는 게 오류처럼 사용자에게 보이는 상황이었습니다. (ex: 카메라 거부 후, 촬영 시작 시 검은 화면만 보임)
위 상황을 방지하기 위해 사용자가 권한을 허용하지 않았다면, 기능 (화면 진입)을 제한하기로 했습니다.
여기서 제한하는 방법은 1️⃣ 권한 허용이 필요함을 알리며 설정 앱으로 이동할 수 있는 알럿을 띄우며, 2️⃣ 다음 화면으로 전환되지 않도록 막았음을 의미합니다.
카메라 접근 권한에 대한 로직을 다루기 위해 AVFoundation.AVCaptureDevice를 import 합니다.
AVCaptureDevice.authorizationStatus(for: .video)의 값을 통해 권한 상태를 확인할 수 있으며 그 종류는 다음과 같습니다.
notDetermined : 아직 권한을 허용할지 거부할지 결정하지 않은 상태restricted : 앱이 미디어 캡처 장치를 사용할 수 없다는 상태denied : 사용자가 명시적으로 권한을 거부한 상태authorized : 사용자가 명시적으로 권한을 허용한 상태