2

Работа по сигналу iBecon с использованием сердечника Bluetooth я могу искать с CBCentralManager сканирования optionn ноль: -Не удается выполнить сканирование через CBCentral диспетчера с идентификатором услуги для iBecon сигнала

Shared.sharedInstance.centralManager?.scanForPeripherals(withServices: nil, options:[CBCentralManagerScanOptionAllowDuplicatesKey:true]) 

Но когда я обеспечиваю свою желательную идентификатор службы а именно: -

Shared.sharedInstance.centralManager?.scanForPeripherals(withServices: [serviceID], options:[CBCentralManagerScanOptionAllowDuplicatesKey:true]) 

он никогда не называет didDiscoverPeripheral метода делегата, я должен сканировать периферийный в фоновом режиме тоже, и в соответствии с яблочной документацией необходимо предоставить сервис-идентификатор явно всякий раз, когда вам нужно сканировать в фоновом режиме. Любой может помочь, что я делаю неправильно здесь.

+1

ли услуга, что вы сканирование для рекламируемого периферийного устройства? Набор услуг, которые рекламирует периферийные устройства, может быть подмножеством услуг, предлагаемых периферийными устройствами. Что такое 'serviceID'? – Paulw11

+0

serviceID - это CBUUID службы, которая была рекламирована периферией. – Himanshu

ответ

2

Я использую, как это, подключить на кнопку мыши событии и использовать CBCentralManagerDelegate, CBPeripheralDelegate делегат

func connectDevice(sender:UIButton){ 


       if peripheral != nil { 
        manager.cancelPeripheralConnection(peripheral) 
        manager = CBCentralManager(delegate: self, queue: nil) 
       } 
     } 



func centralManagerDidUpdateState(central: CBCentralManager) { 
     if central.state == CBCentralManagerState.PoweredOn { 
      central.scanForPeripheralsWithServices(nil, options: nil) 
     } else { 
      self.showAlert(Messages().alert , message: "Bluetooth is not on.") 
     } 
    } 



func centralManager(central: CBCentralManager, didDiscoverPeripheral peripheral: CBPeripheral, advertisementData: [String : AnyObject], RSSI: NSNumber) { 
     let device = (advertisementData as NSDictionary).objectForKey(CBAdvertisementDataLocalNameKey) as? NSString 
     print(device) 

     if device?.containsString(BEAN_NAME) == true { 
      self.manager.stopScan() 
      self.peripheral = peripheral 
      self.peripheral.delegate = self 
      manager.connectPeripheral(peripheral, options: nil) 
     } 
    }