使用 CoreBluetooth 框架时的最佳实践

Best Practices When Using CoreBluetooth Framework

最近我一直在研究蓝牙框架,并且积累了足够丰富的知识来开始构建应用程序。唯一的问题是我找到的所有示例和我所做的所有实践都在于将核心蓝牙核心代码放在与用户交互的 UIView 相同的文件中。

我希望我未来的应用程序有多个视图,其中 BLE 扫描在后台进行。我最初考虑创建一个名称类似于 bleDeviceFinder 的对象,并将该对象传递给每个视图。然而,在考虑之后我意识到,如果我想在当前视图中发生某些事情,我需要函数 didDiscoverPeripheral 来直接访问它应该影响的 UIView 对象。

我知道这可能是一个愚蠢的问题,最好的方法是什么?我在想也许可以设置和提醒每个视图并订阅该提醒;这是一个好的解决方案吗?

您在应用程序中传递的准单例 BTLEManager。它为发现等事件发送 NSNotifications,您的 ViewControllers 会观察这些通知。真相(即已发现设备的列表)保留在 BTLEManager 中。一旦 viewController 收到这样的通知,它就会向 BTLEManager 询问当前设备的列表,然后 viewController 会相应地更改您的视图。 Views 不应该直接与 BTLEManager 对话。

我就是这样做的。