BLE 扫描开始于 Swift
BLE Scanning at Start in Swift
当附加到 IBAction: UIButton
时,我正在扫描在我的 Swift 应用程序中工作的单个 UUID
。但是,我现在正试图让它在应用程序启动时立即开始扫描(后台扫描也应该工作,因为我将它设置为单个 UUID
)。
我已经尝试过我认为合乎逻辑的方法:
self.centralManager?.scanForPeripheralsWithServices(arrayOfServices, options: nil)
在 viewDidLoad
中 arrayOfServices
当然是 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
}
}
当附加到 IBAction: UIButton
时,我正在扫描在我的 Swift 应用程序中工作的单个 UUID
。但是,我现在正试图让它在应用程序启动时立即开始扫描(后台扫描也应该工作,因为我将它设置为单个 UUID
)。
我已经尝试过我认为合乎逻辑的方法:
self.centralManager?.scanForPeripheralsWithServices(arrayOfServices, options: nil)
在 viewDidLoad
中 arrayOfServices
当然是 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
}
}