连接到UUID时,我正在扫描在我的Swift应用程序中工作的单个IBAction: UIButton。但是,我现在正在尝试让它在应用程序启动时立即开始扫描(由于我将其设置为单个UUID,因此后台扫描也应正常工作)。

我尝试了我认为合理的方法:

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


viewDidLoad中,当然arrayOfServicesUUID。但这似乎不起作用。

我如何让我的应用在启动时寻找外设而没有按下按钮的提示?

最佳答案

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

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;
    }
}

09-18 06:06