是否可以使用 scanForPeripheralsWithServices:options:
启动核心蓝牙扫描,并在应用程序处于活动状态的整个过程中保持运行?我试图弄清楚它是否:
A. 皱眉。
B. 对电池寿命不利。
C.产生热量。
D.有任何我可能不知道的负面影响。
CoreBluetooth 实际上具有支持此类行为的功能。CB的设计考虑到了您列出的所有这些内容,Apple出色地将CoreBluetooth与状态保存和恢复(https://developer.apple.com/library/archive/documentation/NetworkingInternetWeb/Conceptual/CoreBluetooth_concepts/CoreBluetoothBackgroundProcessingForIOSApps/PerformingTasksWhileYourAppIsInTheBackground.html)集成在一起,使您可以编写运行数天甚至数周的应用程序。
本质上,即使操作系统决定关闭应用程序以释放内存或设备耗尽电源并死亡(重新启动设备后),您仍然可以执行一组与BLE相关的活动,包括扫描和连接到BLE外围设备。
我自己已经实现了这个,并且仍然对它的效果感到惊讶。在Android上复制相同的性能是可能的,但一直是一场噩梦;在 iOS 上"它只是工作"。