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

近年來,二維碼/條碼讀取在各種應用上越來越普及,例如商品掃描、身份證讀取等等,而 Swift 是一個被廣泛使用的程式語言,本文將介紹如何使用 Swift 實現二維碼/條碼讀取。

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

AVFoundation 是 Apple 提供的一個框架,可以用來處理影像和音訊,也可以用來讀取二維碼/條碼。

首先,我們需要在 info.plist 中加入 Privacy – Camera Usage Description,以便讓使用者知道我們的 App 將會使用相機:

info.plist

接著,我們可以使用以下程式碼來建立一個 AVCaptureSession

let captureSession = AVCaptureSession()

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

let videoCaptureDevice = AVCaptureDevice.default(for: .video)

接著,我們需要建立一個 AVCaptureDeviceInput,以便將相機的資訊輸入到 AVCaptureSession 中:

let videoInput: AVCaptureDeviceInput

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

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

接著,我們需要建立一個 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
}

最後,我們可以使用以下程式碼來啟動 AVCaptureSession

captureSession.startRunning()

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)
}

以上就是使用 Swift 實現二維碼/條碼讀取的簡單範例,如果你想要更詳細的程式碼,可以參考 AppCoda 的 QRCodeReader 範例

總結

本文介紹了如何使用 Swift 實現二維碼/條碼讀取,並提供了一個簡單的範例,如果你想要更詳細的程式碼,可以參考 AppCoda 的 QRCodeReader 範例

推薦閱讀文章

Barcode Scanning in iOS Tutorial: Getting Started
How to Build a Barcode and QR Code Reader in Swift
How to scan a barcode
How to Build a QR Code Reader App in Swift
How to Scan QR Codes with AVFoundation and Swift</a

延伸閱讀本站文章

更多swift相關文章

推薦學習youtube影片

2021 SwiftUI Tutorial for Beginners (3.5 hour Masterclass)

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

Categorized in:

Tagged in:

,