【问题标题】:Fetch Data from BLE Device every 15 min using core bluetooth in iOS在 iOS 中使用核心蓝牙每 15 分钟从 BLE 设备获取数据
【发布时间】:2018-07-09 02:16:22
【问题描述】:

我有特定的要求,我想每隔 15 分钟从连接的 Ble 设备获取数据,持续一段时间,例如晚上 10:00 到上午 10:00。当我的应用程序在后台并且设备被锁定时可以这样做吗?显然,用户不会将应用程序保持在前台这么长时间。关于如何实现这一点的任何建议。

【问题讨论】:

    标签: swift xcode bluetooth ios11


    【解决方案1】:

    它可能会实现,但不幸的是你需要从设备角度解决这个问题。

    每当您需要同步数据时,您的设备都需要唤醒并启动与手机的连接。它会唤醒您的应用程序,甚至在它被终止时启动它。然后,您可以启动一个标准的后台进程,您可以在有限的时间内完成任何需要完成的工作。完成后,您应该断开与设备的连接并等待重复该过程。

    可能会有一些技巧,例如使用静默推送通知来唤醒您的应用并尝试连接,但 Apple 很可能不会允许这样做,而且您的 BT 很可能根本无法在该状态下工作。如果您真的需要它,仍然可以尝试。

    【讨论】:

      【解决方案2】:

      您遇到的问题是 iOS 应用程序中没有计时器。因此,您有一些选项需要外围设备的特定行为。

      一个选项是让应用程序首先连接,并且始终在断开连接时尝试重新连接。然后简单地让外围设备在 15 分钟内不做广告。一旦它再次发布广告,您的应用就会被唤醒,因为它已连接。然后,您可以获取数据。

      另一种选择是持续连接并在外围设备中设置一个计时器,每 15 分钟通知一次数据。

      这两个选项都要求您在应用中启用后台功能以及状态保存和恢复。

      【讨论】:

        【解决方案3】:

        在后台模式下(应用程序被杀死)iOS 设备无法与 BLE 通信。 仅扫描具有服务 uuid 的 BLE 设备。

        在 iOS 中只能进行后台扫描。

        所以您可以在后台模式下找到外围设备时收到通知。

        【讨论】:

          猜你喜欢
          • 2014-03-19
          • 2020-08-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-07-17
          • 2014-05-05
          • 2014-06-13
          • 2019-11-24
          相关资源
          最近更新 更多