Das Folgende ist eine bereinigte Antwort, die für Swift 4.x aktualisiert wurde:
Ab iOS 10 müssen Sie auch die Berechtigung in der Datei info.plist anfordern, um einen Absturz zu vermeiden:

Datenschutz - Beschreibung der Kameranutzung
Sie müssen eine Zeichenfolge angeben, die dem Benutzer mit diesem Schlüssel angezeigt wird. Andernfalls stürzt der Versuch ab, auf die Kamera zuzugreifen.
import AVFoundation
func checkCameraAccess() {
switch AVCaptureDevice.authorizationStatus(for: .video) {
case .denied:
print("Denied, request permission from settings")
presentCameraSettings()
case .restricted:
print("Restricted, device owner must approve")
case .authorized:
print("Authorized, proceed")
case .notDetermined:
AVCaptureDevice.requestAccess(for: .video) { success in
if success {
print("Permission granted, proceed")
} else {
print("Permission denied")
}
}
}
}
func presentCameraSettings() {
let alertController = UIAlertController(title: "Error",
message: "Camera access is denied",
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
})
}
})
present(alertController, animated: true)
}
Dadurch werden die vier möglichen Antworten geprüft und dann entweder um Erlaubnis gebeten, falls dies der Fall ist notDetermined, oder der Benutzer wird zu den Einstellungen weitergeleitet, um sie zu aktivieren, falls dies der Fall ist denied. Wenn dies restrictedder Fall ist , kann der aktuelle Benutzer es möglicherweise nicht aktivieren, Sie sollten ihm jedoch eine Anleitung geben.