iOS CoreBluetooth使用UUID重新连接设备

iOS CoreBluetooth使用UUID重新连接设备,ios,bluetooth,core-bluetooth,bluetooth-lowenergy,Ios,Bluetooth,Core Bluetooth,Bluetooth Lowenergy,我有一个使用CC2541芯片组的蓝牙4.0(BLE)设备,我正在通过iOS核心蓝牙框架与该芯片组进行接口 当设备处于可发现/广告模式时,我可以使用Core Bluetooth成功连接到设备,并在设备之间传输数据,而不会出现任何问题 我维护已连接的设备UUID的集合,现在我正尝试使用以下方式再次连接到其中一个设备: CBCentralManager - (void)retrievePeripherals:(NSArray *)peripheralUUIDs 调用此函数似乎可行,我收到了对以下函

我有一个使用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];
}
如上所述,如果我首先将设备置于可发现/广告模式,我可以成功连接,但这不是一个可行的解决方案。设备必须允许重新连接,而无需将其置于可发现模式

我注意到这个问题的答案表明我需要将BLE设备与iOS设备配对/连接,但这可能取决于BLE芯片组,我使用的设备是CC2541。任何关于如何与设备配对的建议都是非常有用的,或者这是否是必要的步骤。我曾尝试观看,这可能会给我一些帮助,但由于苹果在周四被黑客攻击,我无法访问我的帐户观看视频

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

为什么不试试

它首先指定您需要向需要GATT_AUTHEN_读取权限的GATT特性发送请求。然后,您的CC2541将以无效身份验证进行响应。这将触发苹果的内部绑定机制,并要求提供一把钥匙。您可以输入密钥,然后如果设备和CC2541成功配对,它将读取特征值并输入回调

注意:我不是iOS开发人员,但我曾与CC2541合作过。如果使用默认的simpleProfile示例,则simpleProfile characteristic5中的特征需要身份验证才能读取。看看profiles/SimpleProfile/simplegatprofile.c