applebikekit
掃描電控

掃描

開始掃描

do {
    try FarmLandBikeKit.sleipnir.startScan()
} catch {
    // 如果行動裝置的藍牙為未開啟狀態,則拋出錯誤。
}

停止掃描

FarmLandBikeKit.sleipnir.stopScan()

掃描狀態

FarmLandBikeKit.sleipnir.scanningPublisher
    .sink(receiveValue: { isScanning in
        // 是否正在掃描中。
    })
    .store(in: &self.subscriptions)

透過對 scanningPublisher 的監聽,可以觀察掃描狀態的即時變化。

掃描結果

FarmLandBikeKit.sleipnir.foundDevicesPublisher
    .sink(receiveValue: { foundDevices in
        // 取得掃描到的電控。
    })
    .store(in: &self.subscriptions)

透過對 foundDevicesPublisher 的監聽,可以觀察到掃描的即時裝置陣列。資料結構如下:

public struct BluetoothPeripheral {
 
    public let device: CBPeripheral
 
    public var rssi: Float?
 
    public var deviceName: String?
 
    public var localName: String?
 
    public var uuid: String?
 
    public var manufacturerInfo: String?
 
    public var address: String
}

與電控連線時,必須使用 BluetoothPeripheral 的實例。所以在 UI 介面中,選擇欲連線的電控時,應將其暫存起來。