【问题标题】:how long does it take for CBCentralManager to stop scanning?CBCentralManager 需要多长时间才能停止扫描?
【发布时间】:2020-01-17 10:14:12
【问题描述】:

我想停止,然后在 CBCentralManager 上重新开始扫描。我的问题是:我应该在调用 stopScanning() 后等待交易结算,还是可以立即调用 startScanning()?

我不知道低层和硬件的响应速度如何。

方法一:

    self.stopScanning()
    self.startScanning()

方法二:

    self.stopScanning()

    // wait a few secs for the BLE layer to shutdown to be safe...
    DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(3)) {
       // ...now resume scanning
       self.startScanning()
    }

【问题讨论】:

  • 检查isScanning 属性。

标签: swift core-bluetooth cbcentralmanager


【解决方案1】:

在 scanForPeripherals(withServices:options:) 之前 stopScan() 之后的一小段延迟或监视 isScanning 属性可能适用于您的问题。

我要考虑的另一个问题是,BLE 是为最小功耗而设计的,扫描是一个非常耗电的过程,应该尽可能少地完成。 Apple 在Best Practices for Interacting with a Remote Peripheral Device 下的第一项是关于如何避免扫描或最小化扫描的时间/功耗。因此,在应用程序设计中考虑到这一点也很重要。

【讨论】:

  • 我知道连续扫描是 BLE 的禁忌。然而,我的任务是编写一个 BLE“嗅探器”应用程序——所以我相信我必须连续扫描(或关闭)。应用要求似乎与 BLE 最佳实践直接矛盾。
  • 完全有道理。这是规则被排除在外的少数情况之一。祝你在应用程序上好运。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-06-23
  • 1970-01-01
  • 2020-10-08
  • 2021-07-27
  • 1970-01-01
  • 2011-12-11
  • 1970-01-01
相关资源
最近更新 更多