【问题标题】:Unable to reconnect after cancelling BLE peripheral connection iOS取消BLE外设连接iOS后无法重新连接
【发布时间】:2016-01-30 20:43:20
【问题描述】:

在我的项目中,我成功连接到蓝牙 LE 外围设备并从该设备读取 CBCharacteristic 值。我面临一个问题。如果用户愿意,我需要断开外围设备并重新连接设备。

我正在使用以下步骤。

1.对于断开连接: 我打电话 centralManager?.cancelPeripheralConnection(peripheral)。本次调用成功调用委托func centralManager(central: CBCentralManager, didDisconnectPeripheral peripheral: CBPeripheral, error: NSError?)

2。重新连接:我开始扫描外围设备,就像我在应用程序启动时所做的那样centralManager!.scanForPeripheralsWithServices(nil, options: nil)

但此调用从未调用我尝试连接 BLE 发现的外围设备的委托 func centralManager(central: CBCentralManager, didDiscoverPeripheral peripheral: CBPeripheral, advertisementData: [String : AnyObject], RSSI: NSNumber)

我的问题是在 iOS 中断开 BLE 外围设备并重新连接的最佳做法是什么。我做错什么了吗?

【问题讨论】:

    标签: ios swift bluetooth bluetooth-lowenergy core-bluetooth


    【解决方案1】:

    这不是重新连接到 BLE 的正确方法。

    Apple Documentation:

    重新连接到外围设备

    使用 Core Bluetooth 框架,您可以通过三种方式 重新连接到外围设备。你可以:

    1. 使用
      retrievePeripheralsWithIdentifiers: 方法检索已知外围设备(您过去发现或连接的外围设备)的列表。如果你是外围设备 寻找在列表中,尝试连接到它。这次重新连接
      检索已知外围设备列表中描述了该选项。
    2. 使用retrieveConnectedPeripheralsWithServices:检索当前连接到系统的外围设备列表 方法。如果您要查找的外围设备在列表中,请连接
      它本地到您的应用程序。此重新连接选项在
      中进行了描述 检索已连接外围设备的列表。
    3. 使用 scanForPeripheralsWithServices:options: 方法。如果你找到了, 连接到它。发现外围设备中描述了这些步骤 广告和连接到外围设备的设备 发现之后。

    【讨论】:

    • 感谢@Abhinav 的回答。我正在检查所有 3 种可能的重新连接方式。我是否使用了正确的呼叫来断开与 BLE 设备的连接?
    • 是的,断开连接很好。我分享的链接是处理 BLE 设备的最佳实践。信息量很大。我会建议你经历一次......肯定会增加你的知识库。为了他人的利益,您能否接受这个答案。
    • 请让我检查一下。 'retrievePeripheralsWithIdentifiers:' 对我没有帮助。我之前调用了选项 3 scanForPeripheralsWithServices:options:。目前正在检查选项 2。
    猜你喜欢
    • 2013-10-01
    • 2021-08-07
    • 1970-01-01
    • 2017-07-21
    • 2015-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-22
    相关资源
    最近更新 更多