【问题标题】:iOS CoreBluetooth reconnecting device with UUIDiOS CoreBluetooth 使用 UUID 重新连接设备
【发布时间】:2013-07-21 10:52:40
【问题描述】:

我有一个使用 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 在星期四遭到黑客攻击,我无法访问我的帐户来观看视频。

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

【问题讨论】:

    标签: ios bluetooth core-bluetooth bluetooth-lowenergy


    【解决方案1】:

    你为什么不试试this

    它首先指定您需要向需要 GATT_AUTHEN_READ 权限的 GATT 特征发送请求。然后您的 CC2541 将响应 INVALID AUTHENTICATION。这将触发 Apple 的内部绑定机制并要求提供密钥。您可以输入密码,如果设备和CC2541配对成功,它将读取特征值并输入您的回调。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-22
      • 2012-08-21
      • 2015-07-07
      • 2014-12-04
      • 2013-06-27
      • 2015-03-13
      • 2012-11-25
      相关资源
      最近更新 更多