请检查以下代码:
NSDictionary *scanOptions = [NSDictionary dictionaryWithObject:[NSNumber numberWithBool:NO] forKey:CBCentralManagerScanOptionAllowDuplicatesKey];
[centralManager scanForPeripheralsWithServices:nil options:scanOptions];
我能够扫描所有BLE并成功连接。我的应用程序中有一个按钮可再次扫描BLE。当我尝试使用上面的代码再次扫描时,它会扫描所有BLE并断开所有已连接的BLE。
那么有没有办法只扫描那些没有连接的外围设备。
提前致谢!
答案 0 :(得分:0)
不,没有办法只扫描连接的外围设备。
由于- scanForPeripheralsWithServices:options:
方法是扫描外围设备的唯一方法,因此您只能通过指定services
参数来扫描具有特殊服务的外围设备。或者您可以在options参数中指定CBCentralManagerScanOptionAllowDuplicatesKey
和CBCentralManagerScanOptionSolicitedServiceUUIDsKey
,两者都与连接状态无关。
但您可以通过查看回调中的外围设备state
来发现所有外围设备并挑选断开连接的外围设备:- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary<NSString *,id> *)advertisementData RSSI:(NSNumber *)RSSI