Swift 2025 最新版:實現二維碼與條碼讀取的完整教學

近年來,二維碼和條碼讀取在各種應用上越來越普及,例如商品掃描、身份證讀取等。Swift 作為一個廣泛使用的程式語言,提供了強大的工具來實現這些功能。本文將介紹如何使用 Swift 2025 最新語法與最佳實踐,實現二維碼和條碼的讀取功能。

使用 AVFoundation 實現二維碼與條碼讀取

AVFoundation 是 Apple 提供的框架,可以用來處理影像和音訊,同時也支援二維碼和條碼的讀取。我們將通過以下步驟來實現這一功能。

步驟 1:設定 Info.plist

首先,在您的 Xcode 專案中,打開 info.plist 文件,並加入 Privacy – Camera Usage Description,以便讓使用者知道我們的 App 將會使用相機。

info.plist

步驟 2:建立 AVCaptureSession

接下來,我們需要創建一個 AVCaptureSession,這是整個讀取過程的核心。

let captureSession = AVCaptureSession()

步驟 3:設置相機輸入

我們需要建立一個 AVCaptureDevice,以便取得相機的資訊。

guard let videoCaptureDevice = AVCaptureDevice.default(for: .video) else { return }
let videoInput: AVCaptureDeviceInput

do {
    videoInput = try AVCaptureDeviceInput(device: videoCaptureDevice)
} catch {
    return
}

if captureSession.canAddInput(videoInput) {
    captureSession.addInput(videoInput)
} else {
    failed()
    return
}

步驟 4:設置輸出元數據

接下來,我們需要設置 AVCaptureMetadataOutput,以便將讀取到的二維碼和條碼資訊輸出。

let metadataOutput = AVCaptureMetadataOutput()

if captureSession.canAddOutput(metadataOutput) {
    captureSession.addOutput(metadataOutput)

    metadataOutput.setMetadataObjectsDelegate(self, queue: DispatchQueue.main)
    metadataOutput.metadataObjectTypes = [.qr, .ean13, .ean8, .code128]
} else {
    failed()
    return
}

步驟 5:啟動 AVCaptureSession

最後,我們可以啟動 AVCaptureSession,開始讀取二維碼和條碼。

captureSession.startRunning()

步驟 6:處理讀取結果

AVCaptureMetadataOutput 成功讀取到二維碼或條碼時,將觸發 didOutput 方法,我們可以在這個方法中獲取讀取到的資訊。

func metadataOutput(_ output: AVCaptureMetadataOutput, didOutput metadataObjects: [AVMetadataObject], from connection: AVCaptureConnection) {
    captureSession.stopRunning()

    if let metadataObject = metadataObjects.first {
        guard let readableObject = metadataObject as? AVMetadataMachineReadableCodeObject else { return }
        guard let stringValue = readableObject.stringValue else { return }
        AudioServicesPlaySystemSound(SystemSoundID(kSystemSoundID_Vibrate))
        found(code: stringValue)
    }

    dismiss(animated: true)
}

錯誤排除

在實作過程中,您可能會遇到一些常見問題,例如相機權限未獲得、或是無法識別條碼等。請確保:
– 您已在 info.plist 中正確設定相機使用權限。
– 確保條碼或二維碼清晰可見,且在相機視野範圍內。

延伸應用

您可以進一步擴展此功能,將讀取到的二維碼或條碼資訊與後端伺服器進行交互,或是將其儲存到本地資料庫中,以便後續查詢。

總結

本文介紹了如何使用 Swift 2025 最新語法實現二維碼和條碼的讀取,並提供了一個詳細的步驟流程。如果您想要更詳細的範例,歡迎參考 AppCoda 的 QRCodeReader 範例

Q&A(常見問題解答)

1. 如何處理相機權限未獲得的情況?

確保在 info.plist 中加入相機使用描述,並在應用程式啟動時請使用者授權相機存取。

2. 讀取條碼時無法識別,如何解決?

確保條碼或二維碼的清晰度,並檢查相機是否正確對準條碼。

3. 可以擴展此功能嗎?

當然可以,您可以將讀取到的資訊儲存到資料庫或與後端進行交互,甚至實現支付功能。

Swift 實現二維碼/條碼讀取 🔍

Categorized in:

Tagged in:

,