2015-11-04 85 views
0

当我连接到IBAction: UIButton时,我已扫描在我的Swift应用程序中工作的单个UUID。然而,我现在试图让它在应用程序启动时开始正确扫描(后台扫描也应该工作,因为我已将它设置为单个UUID)。BLE在Swift中开始扫描

我已经试过什么,我认为是合理的:

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

viewDidLoadarrayOfServices是当然的UUID。但这似乎并不奏效。

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

回答

1

您将需要初始化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; 
    } 
} 
+0

感谢 - 这是有道理的,但我没有收到从控制台的任何反馈和扫描不会出现在运转。我也尝试转换成if/else无效。 – user3246092

+0

初始化中央时,您是否看到“Powered On”消息?你确定你正确地添加了CBCentralManagerDelegate吗? –

+0

d'oh。你是对的。 <3 – user3246092

0

斯威夫特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 
    } 
}