OGeek|极客世界-中国程序员成长平台

标题: ios - 无法使用 iBecon Signal 的服务 ID 通过 CBCentral Manager 进行扫描 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 23:46
标题: ios - 无法使用 iBecon Signal 的服务 ID 通过 CBCentral Manager 进行扫描

使用核心蓝牙处理 iBecon 信号,我可以使用 CBCentralManager 扫描选项 nil 进行搜索:-

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

但是当我提供我想要的服务 ID 时,即:-

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

它从不调用 didDiscoverPeripheral Delegate 方法,我也需要在后台模式下扫描外围设备,根据苹果文档,您需要在需要在后台模式下扫描时明确提供服务 ID。任何人都可以帮助我在这里做错了什么。



Best Answer-推荐答案


我是这样使用的, 连接按钮点击事件 并使用 CBCentralManagerDelegate, CBPeripheralDelegate 委托(delegate)

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

关于ios - 无法使用 iBecon Signal 的服务 ID 通过 CBCentral Manager 进行扫描,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41899838/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://sqlite.in/) Powered by Discuz! X3.4