之前在做项目的时候遇到这个问题,我的设备是支持ANCS协议的,但是每次配对后系统就会自动和我的设备连接,我无法搜索到这个设备,通过 retrieveConnectedPeripheralsWithServices:这方法可以找到已经被连接上的所有设备,但是我想利用 connectPeripheral:options对找到的设备进行连接,但是不成功,纠结了好久终于给我发现问题,在已经搜索到系统已连接上的设备后,不应该继续走设备搜索的方法了,所以connectPeripheral:options对找到的设备进行连接和scanForPeripheralsWithServices 应该是两个分支,代码如下:
-(void)scanDevices:(blackscanPeriperalInfos)blackPeriperalInfos;
{
//zwl
//已经被系统或者其他APP连接上的设备数组
NSArray *arr = [self.CBcentralmagager retrieveConnectedPeripheralsWithServices:@[ [CBUUID UUIDWithString:ServiceUUID]]];
if(arr.count>0)
{
for (CBPeripheral* peripheral in arr)
{
if (peripheral != nil)
{
peripheral.delegate = self;
[self.CBcentralmagager connectPeripheral:peripheral options:nil];
}
}
}
else
{
[self.CBcentralmagager scanForPeripheralsWithServices:nil options:nil];
}
}