日記
今日書いたコード
センサーの設定画面でセンサーを表示できるようにした · Gurrium/Komusou@1082ae2 · GitHub
final class BluetoothManager: NSObject { static let shared = BluetoothManager() @Published private(set) var discoveredPeripherals = Set<CBPeripheral>() @Published private(set) var isBluetoothEnabled = false private let centralManager = CBCentralManager() override init() { super.init() centralManager.delegate = self } func startScanningSensors() { centralManager.scanForPeripherals(withServices: [.cyclingSpeedAndCadence], options: nil) } func stopScanningSensors() { centralManager.stopScan() } } extension BluetoothManager: CBCentralManagerDelegate { func centralManagerDidUpdateState(_ central: CBCentralManager) { isBluetoothEnabled = central.state == .poweredOn } func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) { discoveredPeripherals.insert(peripheral) } }
感想
今日は難産だった。Combineがいい感じに使えてよかった反面、別の画面でのスキャンの結果も受け取ることになるので微妙な気もする。一旦同時に一つの画面からしか使わないから大丈夫ということにしたが…あとCBPeripheralをViewに露出するのはやめたい。