繁体   English   中英

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

[英]BLE device keep connect with iPhone when application terminate

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

目前我尝试了以下 4 种情况,但在 3 种情况下成功,其余情况失败:

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

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

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

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

有没有人以前遇到过同样的情况并且有任何经验,对此帮助的想法?

感谢您的支持!

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

  1. 系统终止应用程序(例如因为应用程序长时间未使用,系统将其杀死以节省内存)。
  2. 用户终止/杀死应用程序。

对于第一个场景,您需要添加对 State Preservation 和 Restoration 的支持。 来自 Apple 的文档档案:-

因为状态保存和恢复内置于 Core Bluetooth 中,您的应用程序可以选择加入此功能以要求系统保留您应用程序的中央和外围管理器的状态,并代表他们继续执行某些与蓝牙相关的任务,即使在您的应用不再运行。 当其中一项任务完成时,系统会将您的应用程序重新启动到后台,并让您的应用程序有机会恢复其状态并适当地处理事件。

基本上,您需要添加代码来支持此功能,因为它默认不启用。 请查看下面的链接,特别是“添加对状态保存和恢复的支持”部分:-

iOS 应用的核心蓝牙后台处理

对于第二种情况,如果用户终止/杀死应用程序,则应用程序无法恢复或重新启动自身。 这有一个安全和行为原因,因为如果存在错误或问题并且您强行杀死​​了应用程序,您不会希望您的应用程序以某种方式重新启动,因为否则您将以无限循环结束永远无法完全终止有问题的应用程序。 请查看以下链接,进一步解释了这一点:-

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

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

系统可能会重新启动支持后台执行的应用程序以处理传入事件。 如果应用程序因用户强制退出以外的任何原因终止,系统会在发生以下事件之一时启动应用程序...

我希望这会有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM