Je veux utiliser le CBCentralManager afin de trouver les périphériques Bluetooth basse énergie autour de moi. Le gestionnaire central est lancé, il démarre correctement et il scanne. Mais la fonction didDiscover n'est jamais appelée. J'ai lu tous les autres messages à ce problème et similaire et je suis sûr à 99% que mon problème n'a pas la même cause. Pourtant, je ne peux pas trouver ce que j'ai mal fait.didDiscover périphérique non appelé
import Foundation
import CoreBluetooth
@objc(SmallerBeaconServiceImpl)
class SmallerBeaconServiceImpl : NSObject, CBCentralManagerDelegate, CBPeripheralDelegate {
private let centralManager : CBCentralManager
func centralManagerDidUpdateState(_ central: CBCentralManager) {
if central.state == CBManagerState.poweredOn && isRunning {
startScanningForPeripherals()
}
print("updated state: \(central.state)")
}
func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) {
print(peripheral.name ?? "no name")
}
func startScanningForPeripherals() {
if centralManager.state != CBManagerState.poweredOn {
return
}
centralManager.scanForPeripherals(withServices: nil, options: nil)
print("is scanning: \(centralManager.isScanning)")
}
private(set) var isRunning = false
func startListening() {
if isRunning {
return
}
isRunning = true
print("started.")
startScanningForPeripherals()
}
func stopListening() {
if !isRunning {
return
}
isRunning = false
centralManager.stopScan()
}
override init() {
centralManager = CBCentralManager()
super.init()
print("initiated")
}
}
Vous n'avez pas défini le délégué de 'centralManager'. – Larme
@Larme: J'ajouterais certainement cela comme une réponse, donc cela peut être accepté. –
qui a certainement aidé. Je vous remercie! J'aimerais marquer ceci comme la bonne réponse! – user6155118