From cacbeb57eeb098ac92597cd7090e27d77834bf7b Mon Sep 17 00:00:00 2001 From: Yishi Lin Date: Thu, 30 Aug 2018 00:42:38 +0800 Subject: [PATCH] Output error messages when camera is disabled. --- pass/Controllers/QRScannerController.swift | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/pass/Controllers/QRScannerController.swift b/pass/Controllers/QRScannerController.swift index 3972723..11d7643 100644 --- a/pass/Controllers/QRScannerController.swift +++ b/pass/Controllers/QRScannerController.swift @@ -31,9 +31,12 @@ class QRScannerController: UIViewController, AVCaptureMetadataOutputObjectsDeleg override func viewDidLoad() { super.viewDidLoad() + if AVCaptureDevice.authorizationStatus(for: .video) == .denied { + presentCameraSettings() + } + // Get an instance of the AVCaptureDevice class to initialize a device object and provide the video as the media type parameter. let captureDevice = AVCaptureDevice.default(for: AVMediaType.video) - do { // Get an instance of the AVCaptureDeviceInput class using the previous device object. let input = try AVCaptureDeviceInput(device: captureDevice!) @@ -78,6 +81,7 @@ class QRScannerController: UIViewController, AVCaptureMetadataOutputObjectsDeleg } catch { print(error) + scannerOutput.text = error.localizedDescription return } } @@ -125,4 +129,20 @@ class QRScannerController: UIViewController, AVCaptureMetadataOutputObjectsDeleg scannerOutput.text = "No QR code detected" } } + + func presentCameraSettings() { + let alertController = UIAlertController(title: "Error", + message: "Camera access denied.\nWARNING: Toggle the camera permission resets the app! Save your changes.", + preferredStyle: .alert) + alertController.addAction(UIAlertAction(title: "Cancel", style: .default)) + alertController.addAction(UIAlertAction(title: "Settings", style: .cancel) { _ in + if let url = URL(string: UIApplicationOpenSettingsURLString) { + UIApplication.shared.open(url, options: [:], completionHandler: { _ in + // Handle + }) + } + }) + + present(alertController, animated: true) + } }