即使应用程序没有运行,我也可以与从属 BLE 通信吗?

Posted

技术标签:

【中文标题】即使应用程序没有运行,我也可以与从属 BLE 通信吗?【英文标题】:Can I communicate with a slave BLE even if app is not running? 【发布时间】:2013-11-25 12:15:02 【问题描述】:

我正在开发一个与从属 BLE 设备通信的 ios 应用程序。我知道 iOS 将允许我的应用程序在后台运行以与 BLE 通信。我的疑问是,如果附近有任何 BLE,有什么方法可以打开我的应用程序?我的意思是即使我的应用程序没有运行,我可以与 BLE 通信吗?就像位置服务一样,如果应用注册了重大位置变化警报,那么即使应用没有运行,应用也会在位置发生重大变化时自动打开。

我搜索了很多,但找不到任何有用的文档。非常感谢任何帮助..

【问题讨论】:

BLE 将如何被识别?是GPS 还是Bluetooth?我认为它应该有一些有助于获得认可的东西? 【参考方案1】:

这里有几件事,我认为你必须小心术语。让我们首先澄清“不运行”。该应用有 5 种模式可供选择:

    前台:应用处于“实时”状态并在屏幕上 背景 - 解锁:应用程序处于“实时”状态,但不在屏幕上。屏幕上(正面)有另一个应用,或者用户可能正在主屏幕上浏览他/她的应用等。 背景 - 锁定:不言自明 由用户终止 - 仍在设备上:用户双击主页按钮并向上滑动您的应用 (iOS7) 以将其关闭。 由系统终止 - 仍在设备上:由于内存压力,该应用已被操作系统终止(其他应用需要内存空间)。

显然,如果用户从设备中删除了应用程序,那么就没有什么可讨论的了。

在选项 4 中,应用仍在设备上,但在用户重新启动应用之前不会重新启动其任何后台服务(BLE、位置更新等)。这是新的 iOS7 行为。如果用户终止了应用程序,那么他/她不希望它运行。

在选项 5 中,因为用户没有终止应用程序;操作系统会在收到回调后重新启动应用后台服务。

为了让应用程序在后台运行,它需要您将适当的后台模式添加到其 plist 或只需单击项目(左上角)并转到“功能”并启用“后台模式”和适当的背景模式。在您的情况下:“使用蓝牙 LE 配件”。

现在您似乎在寻找“扫描”而不是连接和交换数据,根据我的经验,扫描仅适用于场景 1、2 和 5。不是 3。我已经尝试过很多次让扫描在打电话时发生没有运气被锁定。

现在,fitbit 等在后台工作的方式是,当应用程序在前台时,应用程序会扫描、发现服务和特征以及手机和配件之间的“设置更新”。完成此设置后,BLE 附件和 iOS 设备之间可能会在后台(锁定和解锁)发生“感兴趣的值”更新(心跳等)。

希望这会有所帮助。

【讨论】:

以上是关于即使应用程序没有运行,我也可以与从属 BLE 通信吗?的主要内容,如果未能解决你的问题,请参考以下文章

CoreBluetooth 框架能否与从属蓝牙 2.0 串行模块配对并通信?

iOS 与配对的 BLE 设备进行安全通信

Android BLE 通知

Android 低功耗蓝牙 (BLE) 环回

iOS8 - BLE 唤醒应用

psoc 4 ble与windows通信