iOS CoreBluetooth与UUID重新连接设备

我有一个蓝牙4.0(BLE)设备使用CC2541芯片组,我通过iOS核心蓝牙框架接口。

当设备处于可发现/广告模式时,我可以成功连接到使用Core Bluetooth的设备,并可以毫无问题地将数据传输到设备或从设备传输数据。

我维护了一组与我连接的设备UUID,现在我正试图再次使用以下方式连接到这些设备之一:

CBCentralManager - (void)retrievePeripherals:(NSArray *)peripheralUUIDs 

调用此函数似乎工作,我收到一个callback到我的实现下面的函数:

 CBCentralManagerDelegate - (void)centralManager:(CBCentralManager *)central didRetrievePeripherals:(NSArray *)peripherals 

我尝试连接的设备是外围设备数组中传递给此function的唯一外围设备。

当我尝试使用连接function(如下所示)连接到此设备时,连接将不会启动,并且CBCentralManagerDelegate或CBPeripheralDelegate上都没有callback。

 - (void) connectPeripheral:(CBPeripheral *)peripheral { NSLog(@"Connecting to peripheral with UUID : %s\r\n",[self UUIDToString:peripheral.UUID]); activePeripheral = peripheral; activePeripheral.delegate = self; [CM connectPeripheral:activePeripheral options:nil]; } 

如上所述,如果我首先将设备置于可发现/广告模式,则可以成功完成连接,但这不是一个可行的解决scheme。 设备必须允许重新连接,而不会将其置于可发现模式。

我注意到这个问题的答案CoreBluetooth:独特的UUID的寿命是多less表明我需要将BLE设备与iOS设备配对/绑定,但这可能取决于BLE芯片组,我使用的设备是CC2541。 任何有关如何配对设备的build议将是最有用的,或者这是否是一个必要的步骤。 我曾试图观看WWDC 2012:高级核心蓝牙 ,这可能会给我一些帮助,但是由于周四苹果遭到黑客入侵,我无法获得观看video的费用。

请让我知道是否需要更多的细节。 蓝牙设备是稳定的,但它正在内部开发。 如果可能需要更改固件来协助配对过程,我可以将这些信息传递给电子设备团队。

你为什么不试试这个 ?

它首先指定你需要发送一个请求GATT特性,需要GATT_AUTHEN_READ权限。 那么你的CC2541将会以INVALID AUTHENTICATION进行响应。 这将触发苹果的内部绑定机制,并要求一个关键。 您可以input密码,然后如果设备和CC2541配对成功,则会读取特征值并input您的回叫。

注:我不是一个iOS开发人员,但我曾与CC2541。 如果使用默认simplePripheral示例,则simpleProfile特性5中的特征需要validation才能读取。 看一下profiles / SimpleProfile / simpleGATTprofile.c