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

编辑:我试图测试我已经拥有的当前实现,并且在强制退出后它似乎没有在后台运行。到目前为止,我从其他来源获得的信息是它确实可以使用标准CoreBluetooth实现,但对于我来说似乎并没有运行。

最佳答案

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

  • 如果用户使用应用程序切换器手动关闭应用程序,则应用程序的BLE部分也会被杀死。
  • 如果用户未手动关闭应用程序,则可以在应用程序后台运行时使用bluetooth-centralbluetooth-peripheral后台模式获取相关的回调。但是,iOS可能仍然会在内存压力下或出于任何原因终止您的应用程序,在这种情况下,BLE部分也消失了。
  • 要使BLE部分保持 Activity 状态,可以在实例化CBCentralManager和CBPeripheralManager时使用restore identifiers。即使在iOS杀死您的应用程序后,带有还原标识符的管理器仍保持 Activity 状态,并且如果发生了有趣的BLE事件,您的应用程序将被启动到后台,并且在应用程序被杀死以进行还原时,您将通过管理器的状态。
  • 主队列在后台执行期间被挂起-确保以不会在主队列上调度事件的方式配置管理器。
  • 如果用户使用应用程序切换器手动关闭应用程序,则恢复将被取消,并且应用程序的BLE部分将无法继续存在。
  • 要测试还原,您需要解决使用BackgroundKill之类的工具。请注意,Xcode调试器可能会使您的应用程序保持 Activity 状态,因此请确保先断开调试器的连接(这将终止该应用程序),然后启动您的应用程序,然后打开BackgroundKill并在Xcode Organizer窗口中检查控制台输出。
  • 关于ios - 在iOS 7.1中强制退出后,核心BLE是否在后台运行?还是只是iBeacon?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22426706/

    10-09 07:15
    查看更多