ios - 如何在没有 AppDelegate 和 ViewController 的 SwiftUI App 中使用 Linea Pro SDK
问题描述
使用没有 AppDelegate 和 ViewController 的 SwiftUI 构建应用程序时,如何实现 Linea Pro SDK?
我按照此处所述集成了 SDK如何使用 Linea-Pro SDK for IOS?我使用了可以在这里找到的 DTDevices.h 和 libdtdev.a 文件https://github.com/matheuscmpm/lineaswift。
现在我编写的用于尝试使用 SDK 的类看起来像这样:
import Foundation
class LineaDevice: DTDeviceDelegate {
private let oScanner: DTDevices
init() {
self.oScanner = DTDevices()
self.oScanner.delegate = self
self.oScanner.connect()
}
func barcodeData(barcode: String!, type: Int32) {
print("Barcode: \(barcode!)")
}
public func getConnectionState() -> Int32 {
return self.oScanner.connstate
}
}
在上面的全局范围内,@main
我像这样初始化这个类let oLineaScanner = LineaDevice()
:
到目前为止,一切都很好。该方法oLineaScanner.getConnectionState()
返回2
,这意味着iOS设备成功连接到扫描仪,当我扫描条形码时,设备会发出哔哔声。但是,barcodeData
我认为现在应该由 SDK 调用的方法没有被调用。
到目前为止,我能找到的任何文档都假设有一个 AppDelegate 和一个 ViewController,这在我的 SwiftUI 项目中不存在。我认为这就是这里的问题。我对 iOS 开发相对较新,所以我对如何从这一点开始一无所知。
有什么办法可以让它像这样工作,如果没有,我该如何让它工作?
解决方案
经过更多的尝试,我终于自己弄清楚了。毕竟需要一个 ViewController 才能让它工作。所以我创建了一个看起来像这样的新文件:
struct LineaView: UIViewControllerRepresentable {
func makeUIViewController(context: Context) -> LineaViewController { return LineaViewController() }
func updateUIViewController(_ uiViewController: LineaViewController, context: Context) { }
func makeCoordinator() -> LineaView.Coordinator { return Coordinator(self) }
}
extension LineaView {
class Coordinator {
var parent: LineaView
init(_ parent: LineaView) {
self.parent = parent
}
}
}
class LineaViewController: UIViewController, DTDeviceDelegate {
// function barcodeData() is implemented here and other related logic for that matter. Don't forget to implement viewDidLoad() where you connect to the device
}
然后我只需将此 LineaView 添加到包含其他所有内容的视图(在我的情况下为 TabView),如下所示:
LineaView().hidden()
这对我有用。该应用程序现在按预期响应条形码扫描。
对于其他人面临此问题的不太可能发生的事件,请继续。希望我能免除你的痛苦。
推荐阅读
- google-bigquery - 如何将时间戳彼此接近的会话分组?
- javascript - 提交后留在同一页面
- javascript - 在异步调用之外访问数据?
- asp.net-mvc - 转换日期时间格式 ASP.net MVC @Html.DisplayFor
- background-color - Visual Studio 2019 颜色主题编辑器 - 如何使解决方案资源管理器的背景颜色透明?
- c# - 从一个方法获取变量值到另一个?
- python - 仅对第三维求和一个 3d numpy 数组
- python - Python csv文件将字符串转换为浮点数
- yocto - 如何构建配方但不将其包含在操作系统映像中
- c++ - 避免在大型 DFS 中重新访问节点的方法?