1

我正在使用 Swift 5 开发一个应用程序,该应用程序连接到一个可穿戴设备来测量身体信息(温度、心率等)

为了测量这些信息,我必须在设备的一个特征中编写一个数据对象(并在激活通知的情况下接收其他特征中的信息),现在我必须每 30 分钟测量一次,所以我必须创建一个计时器每 30 分钟重复一次以执行 BLE 特性中的“写入”。(功能中的所有选项都已激活 - 蓝牙中心、蓝牙外设、后台处理、后台获取)

我在 Stack Overflow 中阅读了很多主题,有人说您不能在后台写入 BLE,而其他人则说您可以。

在实现我读过的所有可能性之前:可以每 30 分钟执行一次任务以连接到设备,将通知设置为 true 到一个特征,并在后台模式下将数据对象写入一个特征?

如果响应为“是”,除了已经在前台工作的相应蓝牙方法之外,我是否必须实现任何代码?

我没有附加我的 BLEManager 类(centralManager),因为它是 Apple 文档中的“标准”,但如果您需要,请询问我,我会附上它。

4

1 回答 1

2

可以在后台模式下使用 CoreBluetooth:https ://developer.apple.com/library/archive/documentation/NetworkingInternetWeb/Conceptual/CoreBluetooth_concepts/CoreBluetoothBackgroundProcessingForIOSApps/PerformingTasksWhileYourAppIsInTheBackground.html

请注意这里的一些警告:

要在后台执行某些外围角色任务,您必须在应用的 Info.plist 文件中包含 UIBackgroundModes 键和 bluetooth-peripheral 值。当此键值对包含在应用的 Info.plist 文件中时,系统会唤醒您的应用以处理读取、写入和订阅事件。

我认为您可以直接使用外围设备唤醒应用程序,但调度可能不起作用。

被唤醒后,应用程序有大约 10 秒的时间来完成任务

不确定您要做什么,但是您的时间有限,因此请记住这一点。

于 2020-08-20T08:37:24.103 回答