对于BLE 4.0,它提供API来发现具有服务UUID阵列的外围设备.
我只是想找到具体的一个.怎么做到这一点?
如果需要将标识符分配给特定设备,该怎么做?
(我认为我的问题需要一些iOS核心蓝牙的背景.)
" 核心蓝牙编程指南"中介绍了重新连接到已知外围设备的过程.
基本上,如果您知道要重新连接的设备的UUID(这是对象的identifier
属性CBPeripheral
),那么您可以使用获取对象的retrievePeripheralsWithIdentifiers:
方法然后尝试连接 -CBCentralManager
CBPeripheral
NSUUID *pid=[[NSUUID alloc]initWithUUIDString:@"45D956BB-75E4-6CEB-C06C-D531B00174E4" ]; NSArray *peripherals=[self.centralManager retrievePeripheralsWithIdentifiers:@[pid]]; if ([peripherals count]>0) { CBPeripheral *peripheral=[peripherals objectAtIndex:0]; peripheral.delegate=self; [self.connectingPeripherals addObject:peripheral]; NSLog(@"Found peripheral %@ with name %@",peripheral.identifier,peripheral.name); [self.centralManager connectPeripheral:peripheral options:nil]; }
这可能不起作用,您可能必须扫描外围设备,因为某些外围设备(特别是iOS设备)的标识符会定期更改其UUID.
编程指南说明 -
注意:由于某些原因,可能无法连接外围设备.例如,该设备可能不在中央附近.此外,一些蓝牙低功耗设备使用随机设备地址,该地址会定期更改.因此,即使该设备附近,该设备的地址可能已经因为它是由系统中,在这种情况下CBPeripheral反对你试图连接到不符合实际的外围设备发现最后一次修改.如果因为地址已更改而无法重新连接到外围设备,则必须使用scanForPeripheralsWithServices:options:方法重新发现它.
您还必须在第一次遇到外围设备时进行扫描.