Je veux me connecter avec le périphérique ble. Mais mon code n'appelle pas la fonction didConect
c'est mon code:
func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [Ssortingng : Any], rssi RSSI: NSNumber) { let device = (advertisementData as NSDictionary) .object(forKey: CBAdvertisementDataLocalNameKey) as? NSSsortingng if device?.contains(BEAN_NAME) == true { print("Did discover peripheral", peripheral) self.bluetoothManager.stopScan() self._peripheral = peripheral self._peripheral.delegate = self central.connect(peripheral, options: nil) } } func centralManager( central: CBCentralManager, didConnect peripheral: CBPeripheral) { //cant call this print("connected to \(BEAN_NAME)") peripheral.discoverServices(nil) }
Journaux
BLE service is powered on Did discover peripheral <CBPeripheral: 0x1740eef00, identifier = 4872623B-F872-443A-8A96-F4E1F84D6841, name = GoDoor in :), state = disconnected>
J'ai résolu ce changement:
func centralManager(central: CBCentralManager, didConnect peripheral: CBPeripheral)
avec :
func centralManager(_ central: CBCentralManager, didConnect peripheral: CBPeripheral)
reference: Swift 3: Impossible de se connecter au périphérique via BLE
J'ai créé un projet de démonstration, qui parsing les périphériques Bluetooth LE et les affiche dans une list:
Découvrez-le sur github: quickies / BluetoothScanner.ios
@IBAction func btnConnect(_ sender: UIButton){ self.appDelegate.bleManager.stopScan() self.appDelegate.selectPeripheral = self.arrayPeripheral[sender.tag] self.appDelegate.bleManager.connect(self.selectPeripheral, options: nil) }