如何在不将应用程序放在前面的情况下从 BLE 设备控制 iOS 应用程序进行后台处理

Posted

技术标签:

【中文标题】如何在不将应用程序放在前面的情况下从 BLE 设备控制 iOS 应用程序进行后台处理【英文标题】:How to control iOS app from BLE device for background processing without putting the application in front 【发布时间】:2014-06-25 07:28:57 【问题描述】:

我正在开发支持蓝牙低功耗 (BLE) 的 DSLR(数码相机)控制器,该控制器接收 GPS 坐标并允许远程对焦/快门控制。

在理想情况下,我不必从口袋里拿出 iPhone。 我的相机一打开,BLE 设备就会连接,如果应用程序尚未启动,它应该会启动它。当相机关闭时,BLE 断开连接,应用程序应进入睡眠模式(停止更新位置并通过 BLE 发送数据)(注意此时应用程序可能处于后台)。当相机再次关闭时(当应用程序处于后台/iphone 锁定时),应用程序应重新连接并开始更新位置并向 BLE 接收器发送数据。

有很多问题要问,而且可能好得令人难以置信,但这可能吗? (ios 7+ SDK 可以)

【问题讨论】:

【参考方案1】:

您可以在后台作为蓝牙 LE 中心(扫描外围设备)进行操作 - 请参阅 Core Bluetooth Programming Guide,但是,在后台外围设备扫描和检测可能不会像应用在前台时那样快。

当检测到外围设备时,您的应用可以发布本地通知,并且用户可以响应此通知以将您的应用启动到前台,但您不能在没有用户交互的情况下强制您的应用进入前台。即使您的应用在后台,您也可以通过 BLE 向相机发送信息,并且您也可以在后台接收位置信息 - 请参阅核心位置编程指南。

断开连接是直截了当的。当您检测到断开连接时,您可以关闭定位服务以节省电池电量。

【讨论】:

如果我的应用程序可以在后台连接和发送数据(包括在连接/断开连接时控制启动/停止更新位置),我不需要将应用程序启动到前台。如果应用程序完全退出并打开相机,然后显示启动应用程序的通知是完美的。非常感谢您的确认。我会在开始编程之前阅读 CB 编程指南。

以上是关于如何在不将应用程序放在前面的情况下从 BLE 设备控制 iOS 应用程序进行后台处理的主要内容,如果未能解决你的问题,请参考以下文章

如何在不将控制器添加到视图层次结构并使其可见的情况下从 UIViewController 获取 UIView?

如何在不重新保存的情况下从 iCloud 下载图像?

在 Android 11 上,如何在不实际点击通知的情况下从通知更新启动 Activity

如何在不将其连接到终端的情况下运行“屏幕”,以便可以在 C++ (qt) 应用程序中捕获输出?

如何在不使用 sudo 的情况下从终端窗口关闭 Internet 连接?

在不将应用列入白名单的情况下避免打盹模式