有谁知道在 iOS 7.1 中用户强制退出应用程序后核心 BLE 是否继续在后台运行?或者只是 iBeacon 继续运行?我知道强制退出后两者都不会继续广播,但是都会继续扫描吗?
编辑:我尝试测试当前的实现,但在强制退出后它似乎并未在后台运行。到目前为止,我从其他来源听到的是,它确实可以运行,但它似乎没有在标准 CoreBluetooth 实现中为我运行。
最佳答案
对于 CoreBluetooth(CBCentralManager 和 CBPeripheralManager),适用以下规则:
- 如果用户使用应用切换器手动关闭应用,应用的 BLE 部分也会被终止。
- 如果用户没有手动关闭应用,您可以使用
bluetooth-central
和bluetooth-peripheral
后台模式在应用处于后台时获取相关回调。但是,iOS 仍可能因内存压力或任何原因杀死您的应用,在这种情况下,BLE 部分也会消失。 - 要保持 BLE 部分处于事件状态,您可以使用 restore identifiers实例化 CBCentralManager 和 CBPeripheralManager 时。即使在 iOS 杀死您的应用程序后,具有恢复标识符的管理器仍保持事件状态,并且如果发生有趣的 BLE 事件,您的应用程序将启动到后台,并且当应用程序被杀死以进行恢复时,您将收到管理器的状态。
- 主队列在后台执行期间挂起 - 确保以不会在主队列上分派(dispatch)事件的方式配置管理器。
- 如果用户使用应用切换器手动关闭应用,恢复功能将被放弃,并且应用的 BLE 部分将无法保持事件状态。
- 要测试恢复,您需要使用 BackgroundKill 等工具。请注意,Xcode 调试器可能会使您的应用程序保持事件状态,因此请确保首先断开调试器连接(这将终止应用程序),然后启动您的应用程序,然后打开 BackgroundKill 并检查 Xcode Organizer 窗口中的控制台输出。
关于ios - 在 iOS 7.1 中强制退出后,核心 BLE 是否在后台运行?或者只是 iBeacon?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22426706/