ios - 连接前识别CBPeripheral的类型

标签 ios swift core-bluetooth thermal-printer cbperipheral

我最近创建了一个应用程序,它在 iOS 上使用 CoreBluetooth 连接到热敏打印机。 除了一件事之外,一切都很顺利。 我可以看到 20 多个蓝牙设备,但只有一个是热敏打印机。 有没有办法让我在连接之前知道该外围设备是否是热敏打印机,以便我可以显示/隐藏它? 谢谢

最佳答案

你在逆向思考这个问题。您不需要获取服务列表,然后决定是否连接。您决定需要什么服务并扫描这些服务。

当您调用 scanForPeripherals(withServices:options:) 时,您几乎应该始终传递您支持的服务列表。如果您传递 nil,那么您几乎肯定会错误地调用它,除非您正在构建通用 BLE 扫描器。

discoverServices(_:) 也是如此。你很少会在那里传递 nil 。您传递了您知道如何处理的服务列表。当您知道自己已经获取了服务时,可以使用 .services 属性来方便地使用,但它很少有用。如果您在不必要的情况下调用 discoverServices(_:),系统会立即向您发送缓存的数据。

关于ios - 连接前识别CBPeripheral的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54423444/

相关文章:

ios - 使用 Swift 在 IOS 中进行社交登录

ios - 未调用 BLE 外设委托(delegate)

ios - CBCentralManager是否会超时连接?

ios - 隐藏带有 subview 引用的父 View

ios - 使用 twitter API 时出现 401 未经授权的错误

ios - 在 Swift 4 中点击单元格时如何可视化 tableViewCell 的变化

ios - 已解决 - 如何在 SceneKit 中使用 "HEVC with Alpha channel"视频?

ios - didDiscoverPeripheral "fail to build"错误

ios - DidSelectRowAtIndextPath 给我错误的详细信息

c - 具有多个目标可执行文件的 Swift 包管理器?