在连接之前识别 CBPeripheral 的类型

Identifying the type of CBPeripheral before connecting

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

你在倒着想。您不获取服务列表,然后决定是否连接。您决定需要什么服务并扫描这些服务。

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

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