将我的应用程序连接到蓝牙4.0设备所需的时间似乎有所不同。相同的应用程序,相同的设有时它会立即连接 - 比如不到一秒钟。有时需要大约10-12秒。一旦进入它根本没有连接 - 我需要重新开始扫描,等等。我想知道是否有其他人看过这个问题。可能导致这种情况的原因是什么?
答案 0 :(得分:1)
这可能有很多原因。这是我头脑中的一些。
该设备不经常发布广告。 O / S基本上扫描发送广告信号的设备。这是设备尽可能不频繁地执行的操作,以节省电池电量。某些设备有一个按钮,可以在设置连接时更频繁地进行广告宣传。其他人可能有一个允许您更改广告费率的设置。 (你使用的是什么设备?)
设备可能已连接到其他设备。
电池可能不足。
可能存在来自其他来源的无线电干扰。 WiFi经常是一个问题。蓝牙4.0和WiFi设备都使用跳频。尝试关闭或重新启动WiFi网络。尝试关闭手机上的WiFi,看看是否有帮助。
当然,虽然我们不愿意承认,但我们的应用程序中总是存在潜在的可能性!我们有一个连接的事实并不能保证应用程序是完美的。
答案 1 :(得分:1)
我也发现了同样的问题。我每2秒就有一个BLE设备广告。
[self.CM scanForPeripheralsWithServices:nil options:0]
在0.2秒到30秒后返回。 (CM是我的CentralManger)
我的下一步是收集CSV文件中的时间并绘制各种连接时间和连接时间与时间的频率分布,以查看是否可以识别模式。
有一个有用的TI demonstrator app。但令人讨厌的是,他们已经使它成为通用的并且未实现iPad故事板(它存在并且空白),并且当我尝试在调试模式下运行时将其设置为仅iPhone版本会导致错误。我没有另外一台带有BLE的Apple设备。
致电
[self.CM stopScan];
在scanWithPeripherals之前似乎减少了真正长时间等待的发生。
我尝试了这个Stackoverflow answer中看到的CBCentralManagerScanOptionAllowDuplicatesKey选项,但是如果有什么似乎延长了发现时间。
我想我会掌握一些蓝牙数据包嗅探工具,以帮助我们了解实际情况。