【发布时间】:2023-03-19 07:51:01
【问题描述】:
早在 10 月 here 就已讨论过此问题。这是一个新问题,因为 CoreBluetooth 相当新,从那时起可能已经发生了一些变化。
我有一个 BLE 设备每 2 秒做一次广告。使用以下命令启动扫描:
[self.CM scanForPeripheralsWithServices:nil options:0]
在 2 到 4 秒后最常返回(通过 centralManager didDiscoverPeripheral 回调)。 (CM 是我的 CentralManger)
但是,大约 30% 的时间,扫描需要 10 到 18 秒。 附近设备中的 WiFi 和 BT 已被禁用,以尽可能清除频谱。 扫描时间似乎与 RSSI 无关。靠近 iPAd3 时为 -40dB,在另一个房间约 5 米外时为 -70dB。
[self.CM stopScan];
在 scanWithPeripherals 之前调用,因为它减少了真正长时间等待的发生。
没有建立连接。未请求任何特征或服务数据。广告数据就足够了。
有一个有用的 TI demonstrator app。 这给出了类似的结果(实际上稍微差一点,因为它没有进行任何 stopScan 调用)
CBCentralManagerScanOptionAllowDuplicatesKey 选项,如 Stackoverflow answer 中所示,如果有任何东西似乎会延长发现时间。
显然,下一步是使用一些更高级的 BT 嗅探器/广告生成工具来进一步表征这种 CoreBluetooth 响应。
这是另一个有用的SO question,但没有详细说明响应时间。
【问题讨论】:
标签: iphone ios bluetooth core-bluetooth bluetooth-lowenergy