CBCentralManager无法连接

时间:2017-05-02 13:27:11

标签: ios swift core-bluetooth

我试图通过蓝牙设备连接附近。我能够发现,但我无法连接它们。

这位代表正在工作,但在发现我正在尝试与其中一个外围设备连接

func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) {

        if let device = (advertisementData as NSDictionary).object(forKey: CBAdvertisementDataLocalNameKey) as? String {
            print(device)
            if device.contains("BODY") {
                self.connectPeripheral = peripheral
                self.connectPeripheral.delegate = self
                self.manager.connect(connectPeripheral, options: nil)
               self.manager.stopScan()
            }
        }
    }

这两个委托方法没有调用。应该叫其中一个。

func centralManager(_ central: CBCentralManager, didConnect peripheral: CBPeripheral) {
        peripheral.delegate = self
        peripheral.discoverServices(nil)
    } 



func centralManager(_ central: CBCentralManager, didFailToConnect peripheral: CBPeripheral, error: Error?) {
    //NSLog("Error %@", error.debugDescription)
    print(error.debugDescription)
}

1 个答案:

答案 0 :(得分:1)

您需要保持对CBPeripheral实例的强引用,因为一旦您告诉Central停止扫描,它将释放所有已发现的外围设备。