在连接之前识别 CBPeripheral 的类型
Identifying the type of CBPeripheral before connecting
我最近创建了一个应用程序,它使用 iOS 上的 CoreBluetooth 连接到热敏打印机。
除了一件事,一切都很好。
我可以看到 20 多个蓝牙设备,但只有一个是热敏打印机。
有没有办法让我在连接之前知道这个外围设备是否是热敏打印机,以便我可以 display/hide 它?
谢谢
你在倒着想。您不获取服务列表,然后决定是否连接。您决定需要什么服务并扫描这些服务。
当您调用 scanForPeripherals(withServices:options:)
时,您应该几乎总是传递您支持的服务列表。如果你传递 nil
,那么你几乎肯定是在错误地调用它,除非你正在构建一个通用的 BLE 扫描器。
discoverServices(_:)
也是如此。你很少在那里传递 nil
。您传递您知道如何处理的服务列表。 .services
属性 在您知道您已经获取服务时可以作为一种便利使用,但它很少有用。如果你在不需要的时候调用discoverServices(_:)
,系统会立即将缓存的数据发送给你。
我最近创建了一个应用程序,它使用 iOS 上的 CoreBluetooth 连接到热敏打印机。 除了一件事,一切都很好。 我可以看到 20 多个蓝牙设备,但只有一个是热敏打印机。 有没有办法让我在连接之前知道这个外围设备是否是热敏打印机,以便我可以 display/hide 它? 谢谢
你在倒着想。您不获取服务列表,然后决定是否连接。您决定需要什么服务并扫描这些服务。
当您调用 scanForPeripherals(withServices:options:)
时,您应该几乎总是传递您支持的服务列表。如果你传递 nil
,那么你几乎肯定是在错误地调用它,除非你正在构建一个通用的 BLE 扫描器。
discoverServices(_:)
也是如此。你很少在那里传递 nil
。您传递您知道如何处理的服务列表。 .services
属性 在您知道您已经获取服务时可以作为一种便利使用,但它很少有用。如果你在不需要的时候调用discoverServices(_:)
,系统会立即将缓存的数据发送给你。