【问题标题】:Identifying the type of CBPeripheral before connecting在连接之前识别 CBPeripheral 的类型
【发布时间】:2019-01-29 14:39:03
【问题描述】:

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

【问题讨论】:

  • 检查它宣传的服务?
  • 我之前试过,由于某种原因服务列表为零
  • 它的广告是什么?你能隔离你所定位的外围设备的广告数据吗?
  • 我如何在调用 peripheral.discorverServices() 之前获取列表,因为我尝试过,但确实在委托函数 didDiscoverServices 中得到了响应

标签: ios swift core-bluetooth thermal-printer cbperipheral


【解决方案1】:

你是在倒过来考虑这个问题。您无需获取服务列表,然后再决定是否连接。您可以决定需要哪些服务并扫描这些服务。

当您致电scanForPeripherals(withServices:options:) 时,您几乎总是应该传递您支持的服务列表。如果你传递了nil,那么除非你正在构建一个通用的 BLE 扫描仪,否则你几乎肯定会错误地调用它。

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

【讨论】:

  • 就是这样,上周大部分时间我一直在努力正确连接和打印。扫描部分是我的第一个代码插入,因此我完全忘记了我可以为扫描添加参数。非常感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-02
  • 2017-07-20
  • 2013-03-28
  • 2023-03-10
  • 1970-01-01
相关资源
最近更新 更多