应用程序终止时,BLE设备与iPhone保持连接

时间:2016-09-06 15:59:26

标签: ios bluetooth-lowenergy incoming-call

我在iOS上遇到了BLE问题。 我的情况如下: 我正在开发应用程序连接到设备BLE 4.0。我的问题是来电功能。该功能的场景是在设备BLE和应用程序之间连接后,当手机接到电话时,我的应用程序会将数据发送到BLE设备并使其振动并点亮。

目前我在下面尝试了4个案例,但在3个案例中成功,其余案例失败了:

  • 案例1 :(成功)当前景上的app时 - >来电 - >应用程序可以向BLE设备发送振动和指示灯闪烁的消息

  • 案例2 :(成功)点击主页和应用程序转到后台 - >来电 - >应用程序可以向BLE设备发送振动和指示灯闪烁的消息

  • 案例3 :(成功)当点击主页和应用程序转到后台并单击睡眠模式按钮 - >来电 - >应用程序可以向BLE设备发送振动和指示灯闪烁的消息

  • 案例4:(FAIL)当在主页按钮上单击双击并在背景上终止应用程序时(删除任务管理器上的应用程序) - >来电 - >应用程序无法向BLE设备发送振动和指示灯闪烁的消息

之前有没有人对此案件有所了解并有任何经验,有这个帮助的想法?

感谢您的支持!

1 个答案:

答案 0 :(得分:4)

在iOS上,有两种方法可以完全终止应用程序:-

  1. 系统终止该应用程序(例如,由于该应用程序已长时间不使用,并且系统将其杀死以节省内存)。
  2. 用户终止/杀死该应用。

对于第一种情况,您需要添加对状态保留和恢复的支持。从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

在文档存档中也间接提到了这一点:-

  

支持后台执行的应用可能会被系统重新启动   处理传入事件。 如果某个应用因任何原因终止   除了用户强制退出,系统还会启动该应用   当下列事件之一发生时...

我希望这会有所帮助。