Swift 2025 最新版:實現二維碼與條碼讀取的完整教學
近年來,二維碼和條碼讀取在各種應用上越來越普及,例如商品掃描、身份證讀取等。Swift 作為一個廣泛使用的程式語言,提供了強大的工具來實現這些功能。本文將介紹如何使用 Swift 2025 最新語法與最佳實踐,實現二維碼和條碼的讀取功能。
使用 AVFoundation 實現二維碼與條碼讀取
AVFoundation 是 Apple 提供的框架,可以用來處理影像和音訊,同時也支援二維碼和條碼的讀取。我們將通過以下步驟來實現這一功能。
步驟 1:設定 Info.plist
首先,在您的 Xcode 專案中,打開 info.plist 文件,並加入 Privacy – Camera Usage Description,以便讓使用者知道我們的 App 將會使用相機。
步驟 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. 可以擴展此功能嗎?
當然可以,您可以將讀取到的資訊儲存到資料庫或與後端進行交互,甚至實現支付功能。
—