我正在开发一款可与蓝牙低功耗设备通信的应用。我正在UI中显示心率。在蓝牙连接时,它在前台和后台工作正常。但我的问题是,当应用程序在后台时,蓝牙设备的连接丢失的时间更长,我的应用程序崩溃了。将崩溃报告显示为:
MyApp[565] has active assertions beyond permitted time:
答案 0 :(得分:1)
使用核心蓝牙后台通信必须通过特征更改通知或指示来实现。在将应用程序带到后台后,您正在保持应用程序运行太长时间,并且iOS正在强行杀死它。我想您正在使用beginBackgroundTaskWithExpirationHandler:
方法来保持一些计时器运行。这在很长一段时间内都不起作用。限制大约是10分钟,但也可能取决于其他因素。
Core Bluetooth Programming Guide包含有关如何处理背景的简明描述。实际上,您的应用需要订阅通知或心率特征的指示,并且只有在回调发生时才对其作出反应。只有在执行某项不间断任务时,应用程序才应在后台运行时继续运行,例如:不可恢复的网络运营。
答案 1 :(得分:0)
我假设您使用的是iOS 6.1
您是否使用CBCentralManager的以下委托方法处理设备断开连接
– centralManager:didDisconnectPeripheral:error:
– centralManager:didFailToConnectPeripheral:error:
我还怀疑在后台没有设备发现,因此您可能必须在代码中处理该逻辑