我正在Swift 5中开发一个应用程序,该应用程序连接到可穿戴设备,用于测量身体信息(温度、心率等(
为了测量这些信息,我必须在设备的一个特性中写入一个Data对象(并在激活通知的情况下接收其他特性中的信息(,现在我必须每30分钟测量一次,所以我必须创建一个每30分钟重复一次的计时器来执行";写";在BLE特性中。(功能中的所有选项都已激活-蓝牙中央、蓝牙外围、后台处理、后台提取(
我在Stack Overflow中读过很多主题,有些人说你不能在后台给BLE写信,还有一些人说你可以。
在实现我读过的所有可能性之前:是否可以每30分钟执行一次连接到设备的任务,将通知设置为true,并在后台模式下在一个特性中写入数据对象?
如果响应是"0";是";,除了已经在前台工作的相应蓝牙方法之外,还有什么代码需要我实现吗?
我没有附加我的BLEManager类(centralManager(,因为它是;标准";来自苹果文档,但如果你需要,问我,我会附上它。
可以在后台模式下使用CoreBluetooth:https://developer.apple.com/library/archive/documentation/NetworkingInternetWeb/Conceptual/CoreBluetooth_concepts/CoreBluetoothBackgroundProcessingForIOSApps/PerformingTasksWhileYourAppIsInTheBackground.html
请注意以下几点:
要在后台执行某些外围角色任务,必须在应用程序的Info.plist文件中包含带有蓝牙外围值的UIBackgroundModes密钥。当这个键值对包含在应用程序的Info.plist文件中时,系统会唤醒你的应用程序来处理读、写和订阅事件。
我认为你可以直接用外设唤醒应用程序,但调度可能不起作用。
被唤醒后,应用程序有大约10秒的时间完成任务
不确定你想做什么,但你有时间限制,所以也要记住这一点。