Iphone 蓝牙连接长时间丢失时,应用程序在后台崩溃

Iphone 蓝牙连接长时间丢失时,应用程序在后台崩溃,iphone,ios,background,core-bluetooth,bluetooth-lowenergy,Iphone,Ios,Background,Core Bluetooth,Bluetooth Lowenergy,我正在开发一个应用程序,将与蓝牙低能耗设备进行通信。我在UI中显示心率。当蓝牙连接时,它在前台和后台都能正常工作。但我的问题是,当应用程序在后台时,蓝牙设备的连接丢失的时间更长,我的应用程序崩溃了。将崩溃报告显示为: MyApp[565] has active assertions beyond permitted time: 我假设您使用的是iOS 6.1 您是否使用CBCentralManager的以下委托方法处理设备断开连接 – centralManager:didDisconnect

我正在开发一个应用程序,将与蓝牙低能耗设备进行通信。我在UI中显示心率。当蓝牙连接时,它在前台和后台都能正常工作。但我的问题是,当应用程序在后台时,蓝牙设备的连接丢失的时间更长,我的应用程序崩溃了。将崩溃报告显示为:

MyApp[565] has active assertions beyond permitted time: 

我假设您使用的是iOS 6.1

您是否使用CBCentralManager的以下委托方法处理设备断开连接

– centralManager:didDisconnectPeripheral:error:
– centralManager:didFailToConnectPeripheral:error:

此外,我怀疑在后台没有设备发现,因此您可能必须在代码中处理该逻辑,核心蓝牙后台通信必须通过特征更改通知或指示来实现。在被带到后台后,你让应用程序运行了太长时间,而iOS正在强行扼杀它。我想您正在使用
beginBackgroundTaskWithExpirationHandler:
方法来保持一些计时器运行。这在很长一段时间内不起作用。限制在10分钟左右,但也可能取决于其他因素


本文包含了如何处理背景的非常简洁的描述。实际上,你的应用程序需要订阅心率特征的通知或指示,并且只有在回调发生时才对其作出反应。只有在执行某些不可中断的任务(例如不可恢复的网络操作)时,应用程序才应在后台运行。

请添加整个错误消息以供将来参考。是的,我正在使用iOS 6.1和iOS 7 beta 6。我使用这些委托方法来断开连接。你能建议我使用什么样的逻辑使我的应用程序在后台保持活动状态吗?要使应用程序在后台保持活动状态,你需要将以下设置添加到项目bluetooth central或bluetooth Perfessional的info.plist中的UIBackgroundModes中,这些设置在文档中已明确提到