蓝牙BLE设备在连接后立即断开连接?

时间:2015-09-21 11:15:44

标签: ios xcode swift bluetooth

我一直在使用连接到蓝牙BLE设备的Swift编写应用程序。出于某种原因,该应用程序并不总是连接到该设备。在这种情况下,它将连接但立即断开连接。这种情况可能只发生在连接的10倍中,但肯定会干扰应用程序的可靠性。 我正在使用CoreBluetooth连接到BLE设备。再次尝试连接通常会使其重新连接,并且每次与此设备通信的其他应用程序都能正常工作,因此我确信这不是外围设备的问题。

我想知道是否有人遇到过类似的问题,或者是否有特殊原因导致这种情况发生?

编辑:这是我桌子的willSelectRow的代码。这是我获得外设连接的地方。

    func tableView(tableView: UITableView, willSelectRowAtIndexPath indexPath: NSIndexPath) -> NSIndexPath? {

        centralManager.stopScan()
        connectingPeripheral.append(discoveredDeviceArrayInfo[indexPath.row])
        connectPeripheralNow(connectingPeripheral[0])

        return indexPath
}

这是我连接的地方,此时我选择了设置要连接的设备的CBPeripheral详细信息的行。

connectPeripheralNow如下所示:

    func connectPeripheralNow(peripheral: CBPeripheral!){
    self.centralManager.connectPeripheral(peripheral, options: nil)
}

didConnectPeripheral和didDiscoverServices看起来像这样

    func centralManager(central: CBCentralManager,didConnectPeripheral peripheral: CBPeripheral)
{

    peripheral.delegate = self
    peripheral.discoverServices([CBUUID(string: "FFE5")])
    print("SUCCESS: Connected to " + peripheral.name!)
}

func peripheral(peripheral: CBPeripheral, didDiscoverServices error: NSError?)
{
    if let servicePeripherals = peripheral.services as [CBService]!
    {
        for servicePeripheral in servicePeripherals
        {
            print("INFORMATION: Service discovered " + String(stringInterpolationSegment: servicePeripheral.UUID))
            peripheral.discoverCharacteristics(nil, forService: servicePeripheral)

        }

    }
}

仅仅是为了获取信息,我确实会出现'SUCCESS:Connected to xxx'消息,表明它正在连接。如果您需要更多代码,请告诉我们!

1 个答案:

答案 0 :(得分:0)

您提到的更多是预期的行为。 BTLE旨在消耗非常少量的能量,因此它会尽快断开连接。如果您不需要永久连接,请点击发现 - >连接 - >读/写 - >设置计时器 - >当计时器触发连接时。

如果您需要永久连接,您应该订阅传输实时数据的特征,如心率应用。您需要实现setNotifyValue:forCharacteristic:方法。请阅读Apple Documentation了解详情。