From e87921b59fd65b5deefd02fd1865fd0ad26ee7f8 Mon Sep 17 00:00:00 2001 From: yumoqing Date: Wed, 24 Jun 2026 19:25:42 +0800 Subject: [PATCH] Request camera permission before QR scanning --- Sources/QRScannerView.swift | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/Sources/QRScannerView.swift b/Sources/QRScannerView.swift index c39bd57..4a95d88 100644 --- a/Sources/QRScannerView.swift +++ b/Sources/QRScannerView.swift @@ -98,6 +98,30 @@ class QRScannerWindowController: NSObject, AVCaptureMetadataOutputObjectsDelegat // 在后台线程初始化摄像头 private func setupCaptureOnBackground(previewHost: NSView) { + // 先检查摄像头权限 + switch AVCaptureDevice.authorizationStatus(for: .video) { + case .notDetermined: + AVCaptureDevice.requestAccess(for: .video) { [weak self] granted in + if granted { + self?.setupCaptureOnBackground(previewHost: previewHost) + } else { + DispatchQueue.main.async { + self?.showError("Camera permission denied") + } + } + } + return + case .denied, .restricted: + DispatchQueue.main.async { [weak self] in + self?.showError("Camera permission denied") + } + return + case .authorized: + break + @unknown default: + break + } + let session = AVCaptureSession() session.sessionPreset = .high