【问题标题】:Swift - Bluetooth write characteristic in Background [closed]Swift - 背景中的蓝牙写入特性[关闭]
【发布时间】:2020-12-09 13:02:37
【问题描述】:

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

为了测量这些信息,我必须在设备的一个特征中编写一个 Data 对象(并在激活通知的情况下接收其他特征中的信息),现在我必须每 30 分钟测量一次,所以我必须创建每 30 分钟重复一次的计时器,以执行 BLE 特性中的“写入”。 (Capabilities 中的所有选项都已激活 - bluetooth-central、bluetooth-peripheral、background-processing、background-fetch)

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

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

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

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

【问题讨论】:

    标签: swift bluetooth background background-mode ios-background-mode


    【解决方案1】:

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

    请注意这里的一些警告:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2018-05-05
      • 1970-01-01
      • 1970-01-01
      • 2016-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多