我应该如何将多个BLE外围设备连接到iOS设备?

Mgi*_*404 4 ios core-bluetooth bluetooth-lowenergy

目前我的团队正在打电话

[myCentralManager scanForPeripheralsWithServices:nil options:nil];
Run Code Online (Sandbox Code Playgroud)

然后NSTimer在两秒钟内开始发射.在这两秒钟内,Central Manager委托方法

centralManager:didDiscoverPeripheral:advertisementData:RSSI:

用于创建CBPeripherals我们感兴趣的数组.

当计时器触发时,我们connectPeripheral在for循环中调用数组中的每个项目.

我担心这不是一次连接多个设备的最佳方式.在呼叫connectPeripheral其他设备之前,我们应该等待一个设备的连接过程完成吗?

谢谢你的任何建议.

all*_*rog 8

你遇到过问题吗?如果没有,那就按照你的方式去做.

一些额外的想法:

  • 通常,建议在开始连接请求之前停止扫描.通过这种方式可以显着加快连接速度.
  • 一次启动多个连接对API方没有任何影响,但是,从稳健性的角度来看,顺序执行它可能更安全.这样您就可以防止核心蓝牙堆栈过载.
  • 而不是NSTimer,我宁愿使用GCD dispatch_after函数,但这是我个人的偏好.(使用ReactiveCocoa会更好.)

  • 这是个坏主意.服务尽可能地由框架缓存.你不应该试图比那更聪明,因为它只会导致失败的尝试.服务,特性,外围设备,什么都不能存储.您应该尽量避免外围设备之间的重叠操作.不幸的是,对于几个连接的设备和频繁的连接/断开事件,堆栈似乎仍然不是很稳定.或者,如果连接多个iOS设备,您可以尝试使用Multipeer Connectivity框架. (2认同)