无法在 IOS 中定期进行后台 API 调用以推送应用中从 BLE 设备接收的数据



我有一个来自Acaia(外围设备)的体重秤,它以5点/秒的速度发出重量数据。我使用Acaias iOS SDK制作了一个可以连接到它以接收数据点的应用程序。

我想即使在后台状态下也能使连接处于活动状态,因此我在蓝牙功能中启用了后台状态模式。现在,应用程序继续使用NSNotification接收数据。

要求和我的工作

我必须将此数据推送到我们的服务器,以便我存储数据 在一个数组中,每 10 秒,我正在对 API POST 调用 将阵列中可用的内容推送到我们的服务器,然后我 重置阵列。

  1. 它在应用程序的前台状态下按预期工作。
  2. 当屏幕锁定或应用处于后台状态时,API 日志不定期,这意味着数据不会定期推送。
  3. 在将应用程序从后台带到前台时,假设在 30 分钟后,应用程序冻结并且连接丢失。

我已经阅读了Apple开发人员指南,该指南说,如果数据点不断出现,则可以在后台永久保持与外围设备的连接。现在如何确保我不会丢失这些权重数据?是否可以在服务器中推送所有这些,也许在批处理 API 调用中?

裁判:

https://developer.apple.com/library/archive/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html

https://acaia.co/blogs/news/new-ios-sdk-api-release

在后台将BLE设备数据发送到服务器

在IOS中可以进行后台处理。但它应该只执行在后台状态从挂起状态保持它的工作。 另外,我发现的是,不断将数据推送到IOS应用程序的BLE外围设备可以防止应用程序进入挂起状态,因此应用程序可能永远处于后台,除非IOS试图杀死它内存和其他问题。

  1. 可以选择使应用程序在后台状态下运行 "功能"部分。
  2. 还要确保处理了正确的外围委托方法。
  3. API 调用是分批进行的。我宁愿保存捕获的数据 从后台本地存储中的 BLE 以及每当应用程序进入时 前台并连接到互联网,将为用户提供选项 推送到服务器。

最新更新