requestAccessForMediaType bittet nicht um Erlaubnis

Ich habe festgestellt, dass meine App keine Erlaubnis zur Verwendung der Kamera verlangt. Nach einigem Experimentieren stellte ich fest, dass der Code, mit dem die Berechtigung überprüft wurde, sehr lange dauert. Also überlegte ich, diesen Teil meines ViewDidloads in einer seriellen Warteschlange laufen zu lassen (Sync). Erzwingen, dass der Rest wartet, bis der Authentifizierungsprozess abgeschlossen ist, bevor die nächste Zeile gestartet wird. Das funktioniert aber nicht wirklich. Die Zeilen beginnen in der richtigen Reihenfolge, enden aber immer noch nicht in der richtigen Reihenfolge.

Das seltsame ist, wenn ich nur die Erlaubnis anrufe und nichts damit mache, kein CompletionHandler (wie der folgende Code), dann wird er das zweite Mal ausgeführt, wenn ich ihn perfekt mit einem CompletionHandler ausführe, obwohl er immer noch keine Warnung anzeigt an den Benutzer. Kann dies daran liegen, dass für die Aufnahme von Videos in Europa keine Genehmigung erforderlich ist?avcapturedevice ref

Wenn ich Code Zeile für Zeile ausführen lassen möchte, muss ich Barrieren verwenden? oder serielle Warteschlange synchronisieren oder ??

AVCaptureDevice.requestAccessForMediaType(AVMediaTypeVideo, completionHandler: { nil }())

Aktualisieren

Diese Methode sollte ziemlich ausfallsicher sein, ist es aber nicht. Es wird als selbstverständlich true zurückgegeben, aber als rawValue (denied) @

func checkForAuthorizationStatus() {
        println("auth me")
        AVCaptureDevice.requestAccessForMediaType(AVMediaTypeVideo, completionHandler: {
            granted in
            if granted {
                println("granted: \(granted)")
                self.deviceAuthorized = true
                println("raw value: \(AVCaptureDevice.authorizationStatusForMediaType(AVMediaTypeVideo).rawValue)")
            } else {
                self.deviceAuthorized = false
            }

        })
    }

Update 2: Antworten Sie in den Kommentaren unten. - Setzen Sie die Datenschutzeinstellungen auf dem Gerät zurück, um die Anforderung zu erhalten.

rawValue für autorisierte ist 3 nicht 4

Antworten auf die Frage(2)

Ihre Antwort auf die Frage