【发布时间】:2018-07-09 02:16:22
【问题描述】:
我有特定的要求,我想每隔 15 分钟从连接的 Ble 设备获取数据,持续一段时间,例如晚上 10:00 到上午 10:00。当我的应用程序在后台并且设备被锁定时可以这样做吗?显然,用户不会将应用程序保持在前台这么长时间。关于如何实现这一点的任何建议。
【问题讨论】:
标签: swift xcode bluetooth ios11
我有特定的要求,我想每隔 15 分钟从连接的 Ble 设备获取数据,持续一段时间,例如晚上 10:00 到上午 10:00。当我的应用程序在后台并且设备被锁定时可以这样做吗?显然,用户不会将应用程序保持在前台这么长时间。关于如何实现这一点的任何建议。
【问题讨论】:
标签: swift xcode bluetooth ios11
它可能会实现,但不幸的是你需要从设备角度解决这个问题。
每当您需要同步数据时,您的设备都需要唤醒并启动与手机的连接。它会唤醒您的应用程序,甚至在它被终止时启动它。然后,您可以启动一个标准的后台进程,您可以在有限的时间内完成任何需要完成的工作。完成后,您应该断开与设备的连接并等待重复该过程。
可能会有一些技巧,例如使用静默推送通知来唤醒您的应用并尝试连接,但 Apple 很可能不会允许这样做,而且您的 BT 很可能根本无法在该状态下工作。如果您真的需要它,仍然可以尝试。
【讨论】:
您遇到的问题是 iOS 应用程序中没有计时器。因此,您有一些选项需要外围设备的特定行为。
一个选项是让应用程序首先连接,并且始终在断开连接时尝试重新连接。然后简单地让外围设备在 15 分钟内不做广告。一旦它再次发布广告,您的应用就会被唤醒,因为它已连接。然后,您可以获取数据。
另一种选择是持续连接并在外围设备中设置一个计时器,每 15 分钟通知一次数据。
这两个选项都要求您在应用中启用后台功能以及状态保存和恢复。
【讨论】:
在后台模式下(应用程序被杀死)iOS 设备无法与 BLE 通信。 仅扫描具有服务 uuid 的 BLE 设备。
在 iOS 中只能进行后台扫描。
所以您可以在后台模式下找到外围设备时收到通知。
【讨论】: