ios - 在 iOS 7.1 中强制退出后,核心 BLE 是否在后台运行?或者只是 iBeacon?

标签 ios bluetooth-lowenergy core-bluetooth ibeacon ios7.1

有谁知道在 iOS 7.1 中用户强制退出应用程序后核心 BLE 是否继续在后台运行?或者只是 iBeacon 继续运行?我知道强制退出后两者都不会继续广播,但是都会继续扫描吗?

编辑:我尝试测试当前的实现,但在强制退出后它似乎并未在后台运行。到目前为止,我从其他来源听到的是,它确实可以运行,但它似乎没有在标准 CoreBluetooth 实现中为我运行。

最佳答案

对于 CoreBluetooth(CBCentralManager 和 CBPeripheralManager),适用以下规则:

  • 如果用户使用应用切换器手动关闭应用,应用的 BLE 部分也会被终止。
  • 如果用户没有手动关闭应用,您可以使用 bluetooth-centralbluetooth-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/

相关文章:

flutter - 在 Flutter 中解码 BLE 设备负载

swift - centralManager didConnectPeripheral 从未被调用

ios - CoreBluetooth在读取其他特征的同时读取特定特征的值

ios - 重命名/重构 View Controller

ios - 将 NSLog 添加到 Objective-C 中的所有方法

android - 结合iBeacon蓝牙低功耗与Android 4.3

ios - didDiscoverPeripheral : not working sometimes on background

ios - 单个 BLE 中心能否通过低功耗蓝牙与多个 BLE 外设连接?

ios - 向左滑动推送 View Controller

ios - 如何调用ViewController中所有自定义UIView的方法?