菜鸟教程小白 发表于 2022-12-12 23:46:58

ios - 无法使用 iBecon Signal 的服务 ID 通过 CBCentral Manager 进行扫描


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

<pre><code>Shared.sharedInstance.centralManager?.scanForPeripherals(withServices: nil, options:)
</code></pre>

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

<pre><code>Shared.sharedInstance.centralManager?.scanForPeripherals(withServices: , options:)
</code></pre>

<p>它从不调用 didDiscoverPeripheral Delegate 方法,我也需要在后台模式下扫描外围设备,根据苹果文档,您需要在需要在后台模式下扫描时明确提供服务 ID。任何人都可以帮助我在这里做错了什么。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>我是这样使用的,
连接按钮点击事件
并使用 <code>CBCentralManagerDelegate, CBPeripheralDelegate</code> 委托(delegate)</p>

<pre><code>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: &#34;Bluetooth is not on.&#34;)
      }
    }



func centralManager(central: CBCentralManager, didDiscoverPeripheral peripheral: CBPeripheral, advertisementData: , 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)
      }
    }
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 无法使用 iBecon Signal 的服务 ID 通过 CBCentral Manager 进行扫描,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/41899838/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/41899838/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 无法使用 iBecon Signal 的服务 ID 通过 CBCentral Manager 进行扫描