扫描时如何获取断开连接的BLE列表?

时间:2016-01-19 21:13:50

标签: ios objective-c core-bluetooth

请检查以下代码:

NSDictionary *scanOptions = [NSDictionary dictionaryWithObject:[NSNumber numberWithBool:NO] forKey:CBCentralManagerScanOptionAllowDuplicatesKey];
[centralManager scanForPeripheralsWithServices:nil options:scanOptions];

我能够扫描所有BLE并成功连接。我的应用程序中有一个按钮可再次扫描BLE。当我尝试使用上面的代码再次扫描时,它会扫描所有BLE并断开所有已连接的BLE。

那么有没有办法只扫描那些没有连接的外围设备。

提前致谢!

1 个答案:

答案 0 :(得分:0)

不,没有办法只扫描连接的外围设备。

由于- scanForPeripheralsWithServices:options:方法是扫描外围设备的唯一方法,因此您只能通过指定services参数来扫描具有特殊服务的外围设备。或者您可以在options参数中指定CBCentralManagerScanOptionAllowDuplicatesKeyCBCentralManagerScanOptionSolicitedServiceUUIDsKey,两者都与连接状态无关。

但您可以通过查看回调中的外围设备state来发现所有外围设备并挑选断开连接的外围设备:- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary<NSString *,id> *)advertisementData RSSI:(NSNumber *)RSSI