我在iOS上遇到了BLE问题。 我的情况如下: 我正在开发应用程序连接到设备BLE 4.0。我的问题是来电功能。该功能的场景是在设备BLE和应用程序之间连接后,当手机接到电话时,我的应用程序会将数据发送到BLE设备并使其振动并点亮。
目前我在下面尝试了4个案例,但在3个案例中成功,其余案例失败了:
案例1 :(成功)当前景上的app时 - >来电 - >应用程序可以向BLE设备发送振动和指示灯闪烁的消息
案例2 :(成功)点击主页和应用程序转到后台 - >来电 - >应用程序可以向BLE设备发送振动和指示灯闪烁的消息
案例3 :(成功)当点击主页和应用程序转到后台并单击睡眠模式按钮 - >来电 - >应用程序可以向BLE设备发送振动和指示灯闪烁的消息
案例4:(FAIL)当在主页按钮上单击双击并在背景上终止应用程序时(删除任务管理器上的应用程序) - >来电 - >应用程序无法向BLE设备发送振动和指示灯闪烁的消息
之前有没有人对此案件有所了解并有任何经验,有这个帮助的想法?
感谢您的支持!
答案 0 :(得分:4)
在iOS上,有两种方法可以完全终止应用程序:-
对于第一种情况,您需要添加对状态保留和恢复的支持。从Apple的文档档案中:-
因为状态保存和恢复内置在Core中 蓝牙,您的应用可以选择启用此功能以要求系统 保留应用中央和外围管理器的状态,以及 继续在其上执行某些蓝牙相关任务 代表,即使您的应用程序不再运行。当其中之一 任务完成后,系统将您的应用重新启动到后台 并使您的应用有机会恢复其状态并进行处理 适当的事件。
基本上,您需要添加代码以支持此功能,因为默认情况下未启用该功能。请查看下面的链接,特别是“增加对状态保存和恢复的支持”部分:-
Core Bluetooth Background Processing for iOS Apps
在第二种情况下,如果用户终止/杀死该应用程序,则该应用程序将无法恢复或重新启动。这是出于安全和行为上的原因,如果存在错误或问题并且您强行杀死了该应用程序,则您不希望您的应用程序以某种方式重新启动自身,因为否则您将陷入无限循环,并且您将永远无法完全终止有问题的应用程序。请查看下面的链接,进一步说明这一点:-
https://www.raywenderlich.com/1395-state-restoration-tutorial-getting-started https://medium.com/arkulpa/ios-stay-connected-to-an-external-ble-device-as-much-as-possible-699d434846d2
在文档存档中也间接提到了这一点:-
支持后台执行的应用可能会被系统重新启动 处理传入事件。 如果某个应用因任何原因终止 除了用户强制退出,系统还会启动该应用 当下列事件之一发生时...
我希望这会有所帮助。