以前的iOS开发,UI用的是Storyboard。这几年苹果推出了SwiftUI,使用一套代码就可以同时支持iPhone和iPad,节约开发成本。由于很多的iOS SDK都是基于UIKit开发的,要集成到SwiftUI里需要包装下。这篇文章分享下如何使用Dynamsoft Camera Enhancer, Dynamsoft Barcode Reader在SwiftUI中快速实现摄像头QR扫码应用。
在M1 Mac上搭建开发环境
- Xcode 13.2.1
- Cocoapods
- 安装homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
- 如果是Intel CPU的mac,直接按照官方方法安装
sudo gem install cocoapods
。在M1上推荐通过brew安装。因为这样可以避免后续安装依赖库的很多问题:brew install cocoapods
- 安装homebrew
- Dynamsoft Camera Enhancer和Dynamsoft Barcode Reader
- 在工程共目录创建Podfile:
pod init
- 打开Podfile添加依赖库:
platform :ios, '9.0' target 'qrscanner' do use_frameworks! pod 'DynamsoftCameraEnhancer','2.1.1' pod 'DynamsoftBarcodeReader','8.9.1' end
- 安装依赖:
pod install
- 在工程共目录创建Podfile:
注意:Barcode SDK需要申请一个有效的序列号才能使用:
let barcodeReader = DynamsoftBarcodeReader.init(license: "license-key")
Xcode 13.2.1工程配置
-
打开工程文件:
open qrscanner.xcworkspace
-
到工程的
Signing & Capabilities
选项里设置团队。 -
添加摄像头权限。在最新版本的Xcode里没有
Info.plist
文件。在设置里找到TARGETS > Info
添加键值:Privacy - Camera Usage Description
在SwiftUI中创建摄像头视频流窗口
-
创建一个叫
qrscanner
的iOS SwiftUI 工程。 -
创建一个
CameraManager.swift
文件。这是一个ObservableObject
类,里面包含了通过Dynamsoft Camera Enhancer创建的camera view和用于接收视频帧的回调函数:import Foundation import UIKit import DynamsoftCameraEnhancer