我最近创建了一个应用程序,它在 iOS 上使用 CoreBluetooth 连接到热敏打印机。 除了一件事之外,一切都很顺利。 我可以看到 20 多个蓝牙设备,但只有一个是热敏打印机。 有没有办法让我在连接之前知道该外围设备是否是热敏打印机,以便我可以显示/隐藏它? 谢谢
最佳答案
你在逆向思考这个问题。您不需要获取服务列表,然后决定是否连接。您决定需要什么服务并扫描这些服务。
当您调用 scanForPeripherals(withServices:options:)
时,您几乎应该始终传递您支持的服务列表。如果您传递 nil
,那么您几乎肯定会错误地调用它,除非您正在构建通用 BLE 扫描器。
discoverServices(_:)
也是如此。你很少会在那里传递 nil
。您传递了您知道如何处理的服务列表。当您知道自己已经获取了服务时,可以使用 .services
属性来方便地使用,但它很少有用。如果您在不必要的情况下调用 discoverServices(_:)
,系统会立即向您发送缓存的数据。
关于ios - 连接前识别CBPeripheral的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54423444/