BLE 扫描开始于 Swift

BLE Scanning at Start in Swift

当附加到 IBAction: UIButton 时,我正在扫描在我的 Swift 应用程序中工作的单个 UUID。但是,我现在正试图让它在应用程序启动时立即开始扫描(后台扫描也应该工作,因为我将它设置为单个 UUID)。

我已经尝试过我认为合乎逻辑的方法:

self.centralManager?.scanForPeripheralsWithServices(arrayOfServices, options: nil)

viewDidLoadarrayOfServices 当然是 UUID。但这似乎不起作用。

如何让我的应用程序在启动时查找外围设备而不提示按下按钮?

您需要初始化 CentralManager 并等待通过 CBCentralManagerDelegate 调用 centralManagerDidUpdateState。确认状态为 PoweredOn 后,即可开始扫描。

func centralManagerDidUpdateState(central: CBCentralManager) {

    switch central.state
    {
    case CBCentralManagerState.PoweredOff:
        print("Powered Off")
    case CBCentralManagerState.PoweredOn:
        print("Powered On")
        //Start Scanning Here
         self.centralManager?.scanForPeripheralsWithServices(arrayOfServices, options: nil)
    case CBCentralManagerState.Unsupported,
         CBCentralManagerState.Resetting,
         CBCentralManagerState.Unauthorized,
         CBCentralManagerState.Unknown:
        print("Unexpected CBCentralManager State")
        fallthrough
    default:
        break;
    }
}

Swift 3

func centralManagerDidUpdateState(_ central: CBCentralManager){

    switch central.state{

    case .poweredOn:
        print("Power On")
        central.scanForPeripherals(withServices: nil, options: nil)     
        break

    case .poweredOff:
        print("Power Off")

        break

    case .unsupported:
        print("Power Unsupported")
        break

    case .resetting:
        print("Power Resetting")
        break

    case .unauthorized:
        print("Power Unauthorized")
        break

    case .unknown:
        print("Power Unknown")
        break
    }
}