我有一台使用CC2541芯片组的蓝牙4.0(BLE)设备,我通过iOS核心蓝牙框架连接。
当设备处于可发现/广告模式时,我可以使用Core Bluetooth成功连接设备,并且可以毫无问题地将数据传输到设备或从设备传输数据。
我维护了一系列已连接的设备UUID,现在我正尝试使用以下方法再次连接到其中一个设备:
CBCentralManager
- (void)retrievePeripherals:(NSArray *)peripheralUUIDs
调用此函数似乎有效,我收到了对以下函数实现的回调:
CBCentralManagerDelegate
- (void)centralManager:(CBCentralManager *)central didRetrievePeripherals:(NSArray *)peripherals
我尝试连接的设备是传递给此功能的外围设备阵列中列出的唯一外围设备。
当我尝试使用我的连接功能(如下所示)连接到此设备时,连接将不会启动,并且我在CBCentralManagerDelegate或CBPeripheralDelegate上都没有回调。
- (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];
}
如上所述,如果我首先将设备置于可发现/广告模式,我可以成功连接,但这不是一个可行的解决方案。设备必须允许重新连接,而不会将其置于可发现模式。
我确实注意到这个问题的答案CoreBluetooth: What is the lifetime of unique UUIDs表明我需要将BLE设备与iOS设备配对/绑定,但这可能取决于BLE芯片组,我使用的设备是CC2541。关于如何与设备配对的任何建议都是最有用的,或者实际上这是否是必要的步骤。我试图看WWDC 2012: Advanced Core Bluetooth可能会给我一些帮助,但由于Apple周四被黑了,我无法访问我的帐号来观看视频。
如果需要更多详细信息,请与我们联系。蓝牙设备稳定,但它是在内部开发的。如果固件需要更改以协助配对过程,我可以将此信息传递给电子团队。
答案 0 :(得分:0)
为什么不尝试this?
首先指定您需要向需要GATT_AUTHEN_READ权限的GATT特征发送请求。然后你的CC2541将以无效认证回应。这将触发Apple的内部绑定机制并要求输入密钥。您可以输入密钥,然后如果设备和CC2541成功配对,它将读取特征值并输入您的回调。
注意:我不是iOS开发人员,但我使用过CC2541。如果您使用的是默认的simplePEripheral示例,那么simpleProfile特性5中的特性需要进行身份验证才能读取。看一下profiles / SimpleProfile / simpleGATTprofile.c