【发布时间】:2019-05-26 06:22:33
【问题描述】:
我有一个 BLE 设备(外围设备)和 iOS 应用程序,它们使用 CoreBluetooth.framework(连接、断开、订阅、通知服务)相互通信。以下是几个场景:
- 应用在前台 -> 我很容易与 BLE 设备连接。
- 应用在后台 -> 我收到回调并连接 BLE 设备
- 应用程序已从后台删除(杀死应用程序) -> 即使我从 iPhone 设备连接设备 -> 设置 -> 蓝牙开启 -> 选择 Ble 设备 -> 连接,我也没有收到任何回调.
我 google 并获得 State Preservation and Restoration 将被调用该应用程序。深度驱动后:
这也显示了 App Force Quit by the user ,应用程序不会使用状态保存和恢复重新启动或激活。
“如果您需要在应用未运行时执行代码,您可以选择多种方式,具体取决于您要执行的操作。 - Background fetch 将让您的应用在后台按预定时间间隔运行大约 30 秒。这样做的目的是获取数据并为应用程序下一次运行准备 UI。 - 推送通知让您的应用从您的服务器获取新数据。如果需要,您可以在设备上显示消息,但这不是必需的 - 静默推送通知让您跳过该部分。 - 本地通知让您可以向用户显示警报,以及您想要的任何媒体附件以及供用户选择的一些选项。如果他们选择了这些选项,那么您的应用程序可以在前台或后台启动以处理它们。”
我尝试使用 Background Fetch,但应用程序终止时它也没有唤醒。
我要实现的唯一目标是“当应用程序已被用户终止或杀死时,每当连接 BLE 设备时,应用程序应在前台/后台调用,以便我执行一些操作,如 get BLE 设备中的数据并保存”
如何在不使用推送通知或静默通知的情况下实现这一点? 如果 CoreBluetooth 框架中有任何应用程序在终止后唤醒的情况,请告诉我?
【问题讨论】:
-
您目前使用哪些后台模式?
-
添加后台模式截图。
-
你的外围设备可以作为BLE设备吗?
-
是的@mihirmehta。
标签: ios swift bluetooth-lowenergy core-bluetooth