3

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

编辑:我试图测试我拥有的当前实现,并且在强制退出后它似乎没有在后台运行。到目前为止,我从其他来源听到的是它确实如此,但它似乎并没有通过标准的 CoreBluetooth 实现为我运行。

4

2 回答 2

2

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

  • 如果用户使用应用切换器手动关闭应用,则应用的 BLE 部分也会被终止。
  • 如果用户没有手动关闭应用,您可以在应用处于后台时使用bluetooth-centralbluetooth-peripheral背景模式获取相关回调。然而,iOS 可能仍然会在内存压力或任何原因下杀死您的应用程序,在这种情况下,BLE 部分也消失了。
  • 为了使 BLE 部分保持活动状态,您可以在实例化 CBCentralManager 和 CBPeripheralManager 时使用恢复标识符。即使在 iOS 杀死您的应用程序后,具有恢复标识符的管理器仍保持活动状态,并且如果发生有趣的 BLE 事件),您的应用程序将启动到后台,并且当应用程序被杀死以进行恢复时,您将获得管理器的状态。
    • 主队列在后台执行期间被挂起 - 确保以不在主队列上分派事件的方式配置管理器。
    • 如果用户使用应用程序切换器手动关闭应用程序,恢复将被取消,并且您的应用程序的 BLE 部分将无法保持活动状态。
    • 要测试恢复,您需要解决使用BackgroundKill之类的工具。请注意,Xcode 调试器可能会使您的应用程序保持活动状态,因此请确保首先断开调试器(这将终止应用程序),然后启动您的应用程序,然后打开 BackgroundKill 并检查 Xcode Organizer 窗口中的控制台输出。
于 2014-03-17T10:48:55.887 回答
0

是的,它继续运行。这是 iOS 7.1 中的一个变化。

在此处的评论中查看我的详细答案和测试程序:https ://stackoverflow.com/a/22365156/1461050

于 2014-03-15T17:43:11.277 回答