在蓝牙开发的时候,扫描外设的方法扫描到的设备只能是没有被连接的设备,也就是说如果有设备在本手机中已经连接配对成功了之后就不会被
[_centralManager scanForPeripheralsWithServices:nil options:nil];方法扫描到,一开始的手自己也没有注意到这个问题,结果在老板使用的工程中,老是出现系统已经连接上蓝牙设备了,然后就找不到设备了的情况,无奈,是时候正面这个问题了,在网上找了相关资料,原来只需要几行简单的代码就能实现。
下面贴代码
//已经被系统或者其他APP连接上的设备数组
NSArray *arr = [_centralManager retrieveConnectedPeripheralsWithServices:@[[CBUUID UUIDWithString:serviceUUID0],[CBUUID UUIDWithString:characteristicUUID4],[CBUUID UUIDWithString:characteristicHeartUUID0]]]; //UUID是外设的服务UUID,满足UUID 的外设就会放在数组中
[arr enumerateObjectsUsingBlock:^(CBPeripheral *obj, NSUInteger idx, BOOL *stop) {
NSLog(@"连接=====%@ %lu /n%@",obj,(unsigned long)idx,obj.services);
[self discoverANCS:obj];
}];
//其中,外设的UUID在
-(void)peripheral:(CBPeripheral *)peripheral didDiscoverServices:(NSError *)error中能够拿到
然后使系统、其他APP已经连接的设备在本App中可发现:
- (void)discoverANCS:(CBPeripheral *)peripheral{
[self centralManager:_centralManager
didDiscoverPeripheral:peripheral
advertisementData:[NSDictionary dictionary]
RSSI:@(0)];
}