Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >将ACSSmartCardIO和SmartCardIO集成到SwiftUI项目中

将ACSSmartCardIO和SmartCardIO集成到SwiftUI项目中
EN

Stack Overflow用户
提问于 2021-08-08 02:14:32
回答 1查看 72关注 0票数 0

我面临的问题是,我希望将以下框架集成到一个SwiftUI项目中,即: ACSSmartCardIO & SmartCardIO

我不精通SwiftUI或iOS开发,无法理解如何在SwiftUI中实现和使用委托。

文档显示:在连接蓝牙卡终端之前,您的应用程序必须导入ACSSmartCardIO模块。您可以从BluetoothSmartCard.shared对象中获取蓝牙终端管理器和终端工厂的实例。若要从BluetoothTerminalManager对象接收事件,您的应用程序必须为其分配一个委托对象。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
...

import SmartCardIO
import ACSSmartCardIO

...

class ViewController: UIViewController {

    ...

    let manager = BluetoothSmartCard.shared.manager
    let factory = BluetoothSmartCard.shared.factory

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

        ...

        // Set the delegate.
        manager.delegate = self

        ...
    }

    ...
}

...

你的应用程序必须从CentralManager对象检查状态,并在不支持蓝牙或其他原因导致你的应用程序无法在你的iOS设备上使用蓝牙时显示消息。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// MARK: - BluetoothTerminalManagerDelegate
extension ViewController: BluetoothTerminalManagerDelegate {

    func bluetoothTerminalManagerDidUpdateState(_ manager: BluetoothTerminalManager) {

        var message = ""

        switch manager.centralManager.state {

        case .unknown, .resetting:
            message = "The update is being started. Please wait until Bluetooth is ready."

        case .unsupported:
            message = "This device does not support Bluetooth low energy."

        case .unauthorized:
            message = "This app is not authorized to use Bluetooth low energy."

        case .poweredOff:
            if !firstRun {
                message = "You must turn on Bluetooth in Settings in order to use the reader."
            }

        default:
            break
        }

        if !message.isEmpty {

            // TODO: Show the message.
            // ...
        }

        firstRun = false
    }

    ...
}

要查找BLE卡终端,必须在BluetoothTerminalManager对象中使用BluetoothTerminalManager.startScan(terminalType:)方法。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
...

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

    if let identifier = segue.identifier {
        switch identifier {

        case "ScanTerminals":

            ...

            // Start the scan.
            manager.startScan(terminalType: .amr220c)

            ...

        default:
            break
        }
    }
}

...
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-08 05:24:21

您的代码与UI几乎没有关系。只有在直接处理用户交互时,SwiftUI才重要。

将此代码应用于SwiftUI设置的一种简单方法是将UIViewController中的所有代码放在一个ViewModel中,该ObservableObject是一个ObservableObject

替换

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class ViewController: UIViewController {

使用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class BluetoothSmartCardViewModel: ObservableObject {

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
extension ViewController: BluetoothTerminalManagerDelegate {

使用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
extension BluetoothSmartCardViewModel: BluetoothTerminalManagerDelegate {

对于任何UIKit代码,如IBActionIBOutlet和任何viewDid...方法,都会出现一些错误。您将不得不创建@Published变量和func来补偿那些与SwiftUI View和Storyboard交互的变量。

segue代码而言,这似乎是“最棘手”的部分。有几种方法可以处理这个问题。

一种方法是使用ScanTerminalsView

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.onAppear(){
    viewModel.manager.startScan(terminalType: .amr220c)
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68699789

复制
相关文章
如何将Thymeleaf技术集成到SpringBoot项目中
截至目前,不仅有了天气预报的API接口,也有了数据的缓存方案。现在,就要进行天气预报服务的实现,也就是说,这里需要一个面向用户的应用。这个应用应该拥有友好的界面,而不是一堆难以理解的数据。
愿天堂没有BUG
2022/10/28
1.1K0
如何将Thymeleaf技术集成到SpringBoot项目中
Elasticsearch 集成到项目中记录(现阶段已完成)
下周开始,项目中要添加Elasticsearch大数据搜索服务了。并且用kong运行整个项目。开文章,后面用来记录。 安装java JDK 下载地址 需要对应自己所需要的版本 安装 elastics
简单、
2018/07/17
7590
SSM生成简单验证码,并集成到项目中
最近一段时间都在忙到做期末项目,目前做到用户留言板功能,所以防止用户恶意提交留言,所以打算加入验证码功能,以下就是生成简单的验证码,代码复制即可使用!
Lcry
2022/11/29
5340
SSM生成简单验证码,并集成到项目中
将Quartz.NET集成到 Castle中
Castle是针对.NET平台的一个开源项目,从数据访问框架ORM到IOC容器,再到WEB层的MVC框架、AOP,基本包括了整个开发过程中的所有东西,为我们快速的构建企业级的应用程序提供了很好的服务.具体可参看TerryLee的Castle 开发系列文章。      可以通过称为 Facility 的组件用控制反转 (Inversion of Control, IoC) 和依赖注入将 第三方组件插入内核中。Startable Facility当一个组件满足一定的依赖关系之后,让它自动运行,比如说启动一个窗
张善友
2018/01/29
1.6K0
如何组合不同版本的React组件到同一项目中
react-dom负责将虚拟 dom 组成的树,渲染到 HTML 的 dom 节点上。
我是leon
2022/03/14
2.5K0
将Java Document或其它文档集成到Eclipse中
阅读更多 将Java Document或其它文档集成到Eclipse中 http://www.cjsdn.net/post/view?bid=7&id=159461&sty=1 http://dev
阿敏总司令
2019/02/28
8220
将 Spring Cloud Task 集成到 Spring Boot 应用中
Spring Cloud Task是Spring Cloud的一个组件,它为Spring Boot应用程序提供了短期的任务处理功能。
堕落飞鸟
2023/04/17
6830
Flutter - 将 Flutter 集成到现有项目(iOS - Framework篇)
用 Flutter 来开发,从来都不可能是新开的一个纯 Flutter 项目,很大一部分都是 老项目接入 Flutter 来混编。
Flutter笔记
2020/06/17
4.5K0
Flutter - 将 Flutter 集成到现有项目(iOS - Framework篇)
Springboot集成logback将错误日志同步到数据库
在scrip下找到自己数据库所需的sql文件即可,连接为:https://github.com/qos-ch/logback/blob/master/logback-classic/src/main/resources/ch/qos/logback/classic/db/script/oracle.sql
分母为零
2019/08/06
2.7K0
使用 Kube-mgmt 将 OPA 集成到 Kubernetes 集群中
Open Policy Agent 简称 OPA,是一种开源的通用策略代理引擎,是 CNCF 毕业的项目。OPA 提供了一种高级声明式语言 Rego,简化了策略规则的定义,以减轻程序中策略的决策负担。在微服务、Kubernetes、CI/CD、API 网关等场景中均可以使用 OPA 来定义策略。
我是阳明
2022/04/06
1.2K0
使用 Kube-mgmt 将 OPA 集成到 Kubernetes 集群中
【ML】项目中最主流的集成算法XGBoost 和 LightGBM
本文是决策树的第三篇,主要介绍基于 Boosting 框架的主流集成算法,包括 XGBoost 和 LightGBM。
yuquanle
2019/11/25
6380
Linux环境下将.net6项目部署到docker
注意点:建议不用勾选单选框“启用Docker(E)",因为勾选后,涉及到Docker-Desktop的安装,可能会引起本地虚拟化组件Hyper-V的冲突。.Net自带Dockerfile我们可以后面创建镜像之前手动创建和编辑。
软件架构师Michael
2022/05/20
2K0
如何结合 Core Data 和 SwiftUI
SwiftUI 和 Core Data 之间相差将近十年 —— SwiftUI 随着 iOS 13 面世而 Core Data 则是 iPhoneOS 3 的产物;很久以前,它还没有被称为 iOS,因为 iPad 尚未发布。尽管时间相距遥远,Apple 还是投入了大量工作以确保这两种强大的技术能够完美地相互配合使用,这意味着 Core Data 就像始终以这种方式设计一样,已集成到 SwiftUI 中。
Swift社区
2021/11/26
11.8K0
如何结合 Core Data 和 SwiftUI
将华为地图套件集成到HarmonyOs可穿戴设备应用中
在本文中,我们将了解 HarmonyOs 中的华为地图套件。地图工具包是用于地图开发的 SDK。覆盖200多个国家和地区的地图数据,支持70多种语言。使用此 SDK,您可以轻松地将基于地图的功能集成到您的 HarmonyOs 应用程序中。
海拥
2022/10/31
1.1K0
将华为地图套件集成到HarmonyOs可穿戴设备应用中
将Core ML模型集成到您的应用程序中
此示例应用程序使用经过训练的MarsHabitatPricer.mlmodel模型来预测火星上的栖息地价格。
iOSDevLog
2018/07/25
1.4K0
将验证码识别功能集成到现有的爬虫框架
过年期间我曾经写过一篇文章《一次简单的验证码识别以及思考》, 目前已经对该功能做了一些优化,可以支持几种类型的验证码识别。其核心思想仍然是上一篇文章所提到的,使用tensorflow来训练标注过的验证码。目前,多种类型的验证码训练完之后可以放到一个模型中。未来,有新增的验证码类型通过训练之后也可以整合到这个模型中。
fengzhizi715
2018/08/24
7030
将验证码识别功能集成到现有的爬虫框架
在老项目中集成Eslint【02】
在了解完基础的Eslint使用指南后,我们就可以进入我们的项目使用了,以如何往一个老的项目加入Eslint配置为例来逐步看看在项目中的配置流程吧,由于公司里用的框架是VUE,我们以VUE项目为例来添加吧。
Snine
2022/02/22
1.3K0
到2020年,智能手机将拥有的十项AI功能
近日,Gartner 列出了人工智能手机的十大「高影响力」应用,并称这些应用将为设备供应商赋予「更高级」的用户体验,从而为客户带来更多价值。 它还预测,到 2022 年底,拥有人工智能特性的智能手机将
CDA数据分析师
2018/02/08
7550
到2020年,智能手机将拥有的十项AI功能
如何将第三方服务注册集成到 Istio ?
作者赵化冰,腾讯云高级工程师,Istio Member,ServiceMesher管理委员,热衷于开源、网络和云计算。目前主要从事服务网格的开源和研发工作。 目录 Istio 服务模型 Pilot 服务模型源码分析 第三方服务注册表集成 Consul 集成 其他服务注册表的集成 小结 参考文档 作为云原生服务网格领域的热门开源项目,Istio 可以为微服务提供无侵入的流量管理、安全通信、服务可见性等服务治理能力。目前越来越多的微服务项目开始考虑将自己的微服务基础设施向 Istio 进行迁移。 Is
腾讯云原生
2020/08/17
2.6K0
同时将博客部署到github和conding
之前我是把hexo托管在github,但是毕竟github是国外的,访问速度上还是有点慢,所以想也部署一套在国内的托管平台, 所以就决定部署到coding。 查询了多方资料,终于鼓捣出了本地一次部署,同时更新到github以及coding。
Fivecc
2022/11/21
4100

相似问题

将Hibernate集成到Spring 3项目中

10

将Keycloak集成到Play2项目中

213

将Angularjs 2项目集成到exesting 2项目中

24

将JS代码集成到Framework7项目中

10

将SwiftyJSON集成到项目中

22
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文