iOS 在未运行状态下从 BLE 获取数据

Posted

技术标签:

【中文标题】iOS 在未运行状态下从 BLE 获取数据【英文标题】:iOS Getting data from BLE in Not running state 【发布时间】:2019-01-09 04:44:37 【问题描述】:

我在前台和后台状态下成功地从 BLE 获取数据。并且也调用了核心蓝牙框架各自的委托方法。

用户强制退出应用程序后,我想要来自 BLE 设备的数据。是否可以在非运行状态下从 BLE 获取数据?或者有没有像 iBeacon 这样在非运行状态下调用的方法?

【问题讨论】:

What are the conditions that ios 11 Bluetooth State Restoration will relaunch my app? 【参考方案1】:

除非使用 iBeacon BLE 设备,否则我认为这是不可能的。如Understanding When Your App Gets Launched into the Background 部分所述:

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

对于蓝牙应用:

扮演中心角色的应用程序接收数据 来自连接的外围设备。 扮演外围角色的应用程序 从连接的中心接收命令。

在大多数情况下,系统在应用程序被强制后不会重新启动它们 由用户退出。一个例外是位置应用程序,它在 iOS 8 和 后来被用户强制退出后重新启动。其他 但是,在某些情况下,用户必须明确启动应用程序或重新启动 应用程序可以在设备启动前自动进入 系统背景。在设备上启用密码保护时,系统不会在用户首次解锁设备之前在后台启动应用程序。

所以当应用程序被用户而不是系统强制退出时,这意味着用户不希望应用程序在后台运行并且应用程序不会重新启动并且不会调用委托.

但如果应用程序被系统杀死,iOS 将在调用委托时再次处理唤醒它。

【讨论】:

以上是关于iOS 在未运行状态下从 BLE 获取数据的主要内容,如果未能解决你的问题,请参考以下文章

iOS App终止时如何继续扫描BLE传感器并识别传感器keyEvent

如何让 GraphQL 在不进行轮询的情况下从数据库中获取实时/新数据?

iOS 在后台模式下从广告中省略制造商数据

iOS 15 在进入 BLE 信标区域时不会唤醒应用

获取 TeamCity 构建状态

在 iOS 中如何在后台运行状态下获取全局触摸事件通知?